1. 程式人生 > 實用技巧 >【常用API】之執行緒池ThreadPoolExecutor

【常用API】之執行緒池ThreadPoolExecutor

執行緒池: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(); } }