orTimeout() 및 completeOnTimeOut() 메서드는 모두 CompletableFuture 클래스에 정의되어 있습니다. 이 두 메서드는 Java 9에서 도입되었습니다. orTimeout() 메서드를 사용하면 주어진 작업이 특정 시간 내에 완료되지 않으면 프로그램이 실행을 중지하고 TimeoutException Strong>을 발생시키는 반면 completeOnTimeOut() 메서드는 제공된 값을 사용하여 완료됩니다. 완성 가능한 미래. 그렇지 않은 경우 지정된 시간 초과 전에 완료됩니다.
<strong>public CompletableFuture<T> orTimeout(long timeout, TimeUnit unit)</strong>
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; <strong>CompletableFuture</strong>.supplyAsync(() -> { try { TimeUnit.SECONDS.sleep(5); } catch(InterruptedException e) { e.printStackTrace(); } return a + b; }) .<strong>orTimeout</strong>(4, TimeUnit.SECONDS) .<strong>whenComplete</strong>((result, exception) -> { System.out.println(result); if(exception != null) exception.printStackTrace(); }); TimeUnit.SECONDS.sleep(10); } }
<strong>25 </strong>
<strong>public CompletableFuture<T> completeOnTimeout(T value, long timeout, TimeUnit unit)</strong>
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; <strong>CompletableFuture</strong>.supplyAsync(() -> { try { TimeUnit.SECONDS.sleep(5); } catch(InterruptedException e) { e.printStackTrace(); } return a + b; }) .<strong>completeOnTimeout</strong>(0, 4, TimeUnit.SECONDS) .<strong>thenAccept</strong>(result -> System.out.println(result)); TimeUnit.SECONDS.sleep(10); } }
위 내용은 Java 9에서 orTimeout() 메서드와 CompleteOnTimeOut() 메서드의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!