更新時間:2023-03-23 來源:黑馬程序員 瀏覽量:
在Java中,創建線程池有兩種常見的方式:
1.通過 Executors 工具類提供的靜態方法創建線程池。
2.通過 ThreadPoolExecutor 構造函數自定義線程池。
下面是兩種方式的代碼示例:
通過 Executors 工具類提供的靜態方法創建線程池:
import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class ThreadPoolExample { public static void main(String[] args) { // 創建固定大小的線程池 ExecutorService executor = Executors.newFixedThreadPool(5); // 提交任務給線程池 for (int i = 0; i < 10; i++) { executor.execute(new Task()); } // 關閉線程池 executor.shutdown(); } static class Task implements Runnable { public void run() { System.out.println("Executing task on thread: " + Thread.currentThread().getName()); } } }
2.通過 ThreadPoolExecutor 構造函數自定義線程池:
import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.ThreadPoolExecutor; public class ThreadPoolExample { public static void main(String[] args) { // 自定義線程池 ThreadPoolExecutor executor = new ThreadPoolExecutor( 2, // 核心線程數 5, // 最大線程數 1, // 空閑線程存活時間 TimeUnit.SECONDS, // 存活時間單位 new LinkedBlockingQueue<Runnable>() // 任務隊列 ); // 提交任務給線程池 for (int i = 0; i < 10; i++) { executor.execute(new Task()); } // 關閉線程池 executor.shutdown(); } static class Task implements Runnable { public void run() { System.out.println("Executing task on thread: " + Thread.currentThread().getName()); } } }
在上面的示例中,我們創建了兩個線程池,一個是固定大小的線程池,一個是自定義線程池。在兩個線程池中,我們都提交了 10 個任務給線程池執行。每個任務都只是打印當前線程的名稱。最后,我們調用了線程池的 shutdown() 方法關閉線程池。