दोनों orTimeout() और completeOnTimeOut() मेथड CompletableFuture क्लास में परिभाषित हैं और ये दो मेथड जावा 9 में पेश किए गए हैं। orTimeout() मेथड का उपयोग यह निर्दिष्ट करने के लिए किया जा सकता है कि यदि कोई दिया गया कार्य एक निश्चित समय अवधि के भीतर पूरा नहीं होता है, तो प्रोग्राम निष्पादन रोक देता है और TimeoutException फेंकता है जबकि completeOnTimeOut() मेथड CompletableFuture को प्रदान किए गए मान के साथ पूरा करता है। यदि नहीं, तो यह दिए गए टाइमआउट से पहले पूरा हो जाता है।
orTimeout() के लिए सिंटैक्स
public CompletableFutureorTimeout(long timeout, TimeUnit unit)
उदाहरण
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
public class OrTimeoutMethodTest {
public static void main(String args[]) throws InterruptedException {
int a = 10;
int b = 15;
CompletableFuture.supplyAsync(() -> {
try {
TimeUnit.SECONDS.sleep(5);
} catch(InterruptedException e) {
e.printStackTrace();
}
return a + b;
})
.orTimeout(4, TimeUnit.SECONDS)
.whenComplete((result, exception) -> {
System.out.println(result);
if(exception != null)
exception.printStackTrace();
});
TimeUnit.SECONDS.sleep(10);
}
}
आउटपुट
25
completeOnTimeOut() के लिए सिंटैक्स
public CompletableFuturecompleteOnTimeout(T value, long timeout, TimeUnit unit)
उदाहरण
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
public class CompleteOnTimeOutMethodTest {
public static void main(String args[]) throws InterruptedException {
int a = 10;
int b = 15;
CompletableFuture.supplyAsync(() -> {
try {
TimeUnit.SECONDS.sleep(5);
} catch(InterruptedException e) {
e.printStackTrace();
}
return a + b;
})
.completeOnTimeout(0, 4, TimeUnit.SECONDS)
.thenAccept(result -> System.out.println(result));
TimeUnit.SECONDS.sleep(10);
}
}
आउटपुट
25