delayedExecutor() मेथड
delayedExecutor() मेथड Java 9 में CompletableFuture क्लास में जोड़ा गया है। CompletableFuture delayedExecutor() के दो ओवरलोडेड मेथड्स को परिभाषित करता है: पहला मेथड डिफ़ॉल्ट एक्जीक्यूटर ऑब्जेक्ट से एक एक्जीक्यूटर ऑब्जेक्ट लौटाता है जिसे CompletableFuture ऑब्जेक्ट देरी के बाद टास्क निष्पादित करने के लिए उपयोग करता है और नया एक्जीक्यूटर ऑब्जेक्ट टास्क निष्पादन कर सकता है, जबकि दूसरा मेथड भी एक एक्जीक्यूटर ऑब्जेक्ट लौटाता है लेकिन यह एक एक्जीक्यूटर ऑब्जेक्ट है जिसे हम इस मेथड में देरी के बाद पास करते हैं और नया एक्जीक्यूटर ऑब्जेक्ट भी टास्क निष्पादन कर सकता है।
सिंटैक्स
public static Executor delayedExecutor(long delay, TimeUnit unit, Executor executor)
public static Executor delayedExecutor(long delay, TimeUnit unit)
उदाहरण: 3 सेकंड देरी के साथ असिंक्रोनस टास्क
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
public class DelayedExecutorMethodTest {
public static void main(String args[]) throws InterruptedException, ExecutionException {
CompletableFuture<String> future = new CompletableFuture<>();
future.completeAsync(() -> {
try {
System.out.println("inside future: processing data...");
return "tutorialspoint.com";
} catch(Throwable e) {
return "not detected";
}
}, CompletableFuture.delayedExecutor(3, TimeUnit.SECONDS))
.thenAccept(result -> System.out.println("accept: " + result));
for(int i = 1; i <= 5; i++) {
try { Thread.sleep(1000); } catch(InterruptedException e) { e.printStackTrace(); }
System.out.println("running outside... " + i + " s");
}
}
}
आउटपुट
running outside... 1 s
running outside... 2 s
inside future: processing data...
accept: tutorialspoint.com
running outside... 3 s
running outside... 4 s
running outside... 5 s
delayedExecutor() निर्दिष्ट देरी के बाद असिंक्रोनस टास्क निष्पादन को शेड्यूल करने के लिए उपयोगी है।