JavaFutureTask
和線程池(ExecutorService
)可以很好地配合使用,以提高程序的性能和響應能力。JavaFutureTask
是一個實現了RunnableFuture
接口的任務類,它可以用于異步執行任務并獲取任務執行結果。線程池則是一個用于管理多個線程的容器,可以有效地復用線程資源,提高系統性能。
下面是一個簡單的示例,展示了如何使用JavaFutureTask
和線程池配合:
import java.util.concurrent.*;
public class JavaFutureTaskWithThreadPool {
public static void main(String[] args) {
// 創建一個固定大小的線程池
ExecutorService executorService = Executors.newFixedThreadPool(4);
// 創建一個JavaFutureTask實例
JavaFutureTask<String> futureTask = new JavaFutureTask<>(() -> {
// 模擬一個耗時任務
Thread.sleep(3000);
return "任務執行結果";
});
// 將JavaFutureTask提交給線程池執行
executorService.submit(futureTask);
try {
// 獲取任務執行結果,如果任務尚未完成,這里會阻塞等待
String result = futureTask.get();
System.out.println("任務執行結果: " + result);
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
// 關閉線程池
executorService.shutdown();
}
}
在這個示例中,我們創建了一個固定大小為4的線程池,然后創建了一個JavaFutureTask
實例,將一個耗時任務提交給線程池執行。通過調用futureTask.get()
方法,我們可以阻塞等待任務執行完成并獲取任務執行結果。最后,記得關閉線程池以釋放資源。