在Java中,要使用newFixedThreadPool
提交任務,首先需要導入java.util.concurrent
包中的ExecutorService
和Executors
類。然后,可以使用Executors
類創建一個固定大小的線程池,接著使用ExecutorService
的submit
方法提交任務。
下面是一個簡單的示例:
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public class FixedThreadPoolExample {
public static void main(String[] args) {
// 創建一個固定大小為3的線程池
ExecutorService fixedThreadPool = Executors.newFixedThreadPool(3);
// 提交任務到線程池
for (int i = 0; i < 10; i++) {
final int taskNumber = i;
fixedThreadPool.submit(() -> {
System.out.println("Task " + taskNumber + " is running on thread " + Thread.currentThread().getName());
try {
// 模擬任務執行時間
TimeUnit.SECONDS.sleep(2);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Task " + taskNumber + " is completed");
});
}
// 關閉線程池
fixedThreadPool.shutdown();
try {
// 等待所有任務完成
if (!fixedThreadPool.awaitTermination(30, TimeUnit.SECONDS)) {
fixedThreadPool.shutdownNow();
}
} catch (InterruptedException e) {
fixedThreadPool.shutdownNow();
}
}
}
在這個示例中,我們創建了一個固定大小為3的線程池,并提交了10個任務。每個任務都會打印出它正在運行的線程名稱,然后休眠2秒,最后打印出任務完成的信息。在所有任務提交完成后,我們關閉了線程池。