또는Timeout() 둘 다 및 completeOnTimeOut() 메소드는 CompletableFuture 에 정의되어 있습니다. 클래스 및 이 두 메서드는 Java 9에 도입되었습니다. orTimeout() 메서드를 사용하여 지정된 작업이 특정 기간 내에 완료되지 않으면 프로그램이 실행을 중지하고 TimeoutException 을 발생시키도록 지정할 수 있습니다. 반면 completeOnTimeOut() 메소드는 CompletableFuture 를 완료합니다. 제공된 값으로. 그렇지 않은 경우 지정된 시간 초과 전에 완료됩니다.
orTimeout() 구문
public CompletableFuture<T> orTimeout(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 CompletableFuture<T> completeOnTimeout(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