在Java中,線程池是一種管理線程的技術,它可以提高系統性能,減少資源消耗,提高響應速度。Java提供了java.util.concurrent.ExecutorService
接口和java.util.concurrent.Executors
工具類來創建和管理線程池。
下面是一個簡單的線程池使用示例:
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
int numberOfThreads = 4; // 定義線程池中的線程數量
ExecutorService executorService = Executors.newFixedThreadPool(numberOfThreads);
這里我們使用Executors.newFixedThreadPool()
方法創建了一個固定大小的線程池。你還可以使用其他方法創建不同類型的線程池,如newCachedThreadPool()
、newScheduledThreadPool()
等。
for (int i = 0; i < 10; i++) {
executorService.submit(() -> {
System.out.println("Task executed by thread: " + Thread.currentThread().getName());
});
}
這里我們使用executorService.submit()
方法向線程池提交了10個任務。每個任務都是一個簡單的Lambda表達式,它打印當前線程的名稱。
executorService.shutdown();
try {
if (!executorService.awaitTermination(30, TimeUnit.SECONDS)) {
executorService.shutdownNow();
}
} catch (InterruptedException e) {
executorService.shutdownNow();
}
在所有任務提交完成后,我們需要關閉線程池。首先調用executorService.shutdown()
方法,它會平滑地關閉線程池,等待所有任務執行完畢。然后我們使用executorService.awaitTermination()
方法等待線程池中的任務執行完畢,或者等待30秒超時。如果超時,我們調用executorService.shutdownNow()
方法強制關閉線程池。
這就是一個簡單的Java線程池使用示例。你可以根據實際需求調整線程池的大小和任務類型。