newFixedThreadPool
是 Java 中 ExecutorService
的一種實現,它創建了一個固定大小的線程池。當線程池中的線程完成任務后,它們不會立即銷毀,而是會進入等待狀態,等待新的任務到來。這樣可以避免頻繁創建和銷毀線程帶來的性能開銷,提高系統資源的利用率。
要使用 newFixedThreadPool
創建一個固定大小的線程池并復用線程,你可以按照以下步驟操作:
java.util.concurrent.Executors
類。Executors.newFixedThreadPool(int nThreads)
方法創建一個固定大小的線程池。參數 nThreads
表示線程池中的最大線程數。ExecutorService
的 submit()
或 execute()
方法提交任務到線程池。這些方法會返回一個表示異步計算結果的 Future
對象(對于 submit()
)或 void
(對于 execute()
)。下面是一個簡單的示例:
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class FixedThreadPoolExample {
public static void main(String[] args) {
// 創建一個固定大小為 3 的線程池
ExecutorService executorService = Executors.newFixedThreadPool(3);
// 提交任務到線程池
for (int i = 0; i < 10; i++) {
final int taskNumber = i;
Future<?> future = executorService.submit(() -> {
System.out.println("Task " + taskNumber + " is executed by thread " + Thread.currentThread().getName());
try {
// 模擬任務執行耗時
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
});
}
// 關閉線程池
executorService.shutdown();
}
}
在這個示例中,我們創建了一個固定大小為 3 的線程池,并提交了 10 個任務。線程池會自動分配線程來執行這些任務,并在任務完成后復用線程。最后,我們調用 shutdown()
方法關閉線程池。