何時在 Java 9 中使用 CompletableFuture 的 delayedExecutor() 方法?
delayedExecutor()方法已新增到了 Java 9 中的CompletableFuture類。CompletableFuture定義了delayedExecutor()的兩個過載方法:第一個方法從預設Executor物件返回一個 Executor 物件,該CompletableFuture物件在延遲後使用該物件執行任務,並且new Executor物件可以執行任務,而第二個方法也返回一個 Executor 物件,但這是一個Executor物件,我們在延遲後將該物件傳遞到此方法中,並且new Executor物件也可以執行任務。
語法
public static Executor delayedExecutor(long delay, TimeUnit unit, Executor executor) public static Executor delayedExecutor(long delay, TimeUnit unit)
示例
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
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式語言
C++
C#
MongoDB
MySQL
Javascript
PHP