को अवरुद्ध कर सकता है कुछ ब्लॉगों में उल्लिखित (उदा। I can't emphasize this enough: thenAccept()/thenRun() methods do not block) CompletableFuture.thenAccept
वास्तव में ब्लॉक कर सकते हैं। निम्नलिखित कोड पर विचार करें, uncommenting pause
विधि कॉल thenAccept
ब्लॉक करने के लिए कारण होगा:CompletableFuture.thenAccept वास्तव में
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
log.trace("return 42");
return "42";
});
//pause(1000); //uncommenting this will cause blocking of thenAccept
future.thenAccept((dbl -> {
log.trace("blocking");
pause(500);
log.debug("Result: " + dbl);
}));
log.trace("end");
pause(1000);
हम यह सुनिश्चित करें कि निम्नलिखित ब्लॉक नहीं हो सकता है? यह मेरी समझ है कि अगर supplyAsync
तुरंत चलाता है तो thenAccept
अवरुद्ध कर सकता है, नहीं?
CompletableFuture<Void> future = CompletableFuture.supplyAsync(() -> {
return "42";
}).thenAccept((dbl -> {
pause(500);
log.debug("Result: " + dbl);
}));