【常用API】之執行緒池ThreadPoolExecutor
阿新 • • 發佈:2020-12-14
執行緒池:ThreadPoolExecutor
預設先建立好指定個數的執行緒,放入執行緒池中。
需要使用的時候,先到池子裡面,那出來,使用。
用完在還回去,不要銷燬掉。
它的消耗比建立銷燬更少。
具體例項見課堂程式碼。
每一執行一批,就是ThreadPoolExecutor的大小。
然後,結束一個,再進入一個。
例項:
----建立執行緒類
package com.xzm.執行緒池; //自定義執行緒類 public class MyTask implements Runnable{ //只是為了讓大家看到是第幾個執行緒 private int num;public MyTask(int num) { this.num = num; } //重寫 @Override public void run() { System.out.println("正在執行task-"+this.num); //休眠一會 try { Thread.currentThread().sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("task-"+this.num+",執行完畢!"); } }
----在主函式中建立執行緒池
package com.xzm.執行緒池; import java.util.concurrent.Executors; //匯入需要的包檔案 import java.util.concurrent.ThreadPoolExecutor; //【執行緒池】 public class Test { //主函式:主執行緒 public static void main(String[] args) { //建立執行緒池,可以是類中的屬性或靜態屬性或方法變數//這裡就建立為方法中的變數 //宣告執行緒池 = (轉成執行緒池物件)系統方法建立; ThreadPoolExecutor executor = (ThreadPoolExecutor)Executors.newFixedThreadPool(5); //迴圈往池子裡面新增執行緒 for(int i=1; i<=10; i++) { //建立新的執行緒 MyTask mt = new MyTask(i); //新增到執行緒池中 executor.execute(mt); } //停止接收新的任務 executor.shutdown(); } }