1. 程式人生 > 實用技巧 >2020 China Collegiate Programming Contest Qinhuangdao Site K題 Kingdom's Power

2020 China Collegiate Programming Contest Qinhuangdao Site K題 Kingdom's Power

執行緒池

為什麼需要執行緒池

  • 經常建立和銷燬執行緒是耗時且不穩定的,很難勝任併發度較高的任務。
  • 可以採用池化方法解決這個問題,提前建立好多個執行緒,構成一個執行緒池,使用時直接獲取,使用完放回池中,避免了頻繁建立銷燬的消耗。

使用執行緒池

  • JDK5.0提供了執行緒池相關的API:ExecutorService和Executors
  • ExecutorService:真正的執行緒池介面。常見子類ThreadPoolExecutor。
  • Executors:工具類,執行緒池的工廠類,用於建立並返回不同型別的執行緒池。

程式碼實現

package MultiProcess;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class TestPoll {
    public static void main(String[] args) {
        //1.建立服務,建立執行緒池
        ExecutorService service = Executors.newFixedThreadPool(10);

        //2.執行
        service.execute(new MyThread());
        service.execute(new MyThread());
        service.execute(new MyThread());
        service.execute(new MyThread());
        service.execute(new MyThread());

        //3.關閉
        service.shutdown();
    }
}

class MyThread implements Runnable{
    @Override
    public void run() {

        System.out.println(Thread.currentThread().getName());

    }
}
結果
pool-1-thread-1
pool-1-thread-2
pool-1-thread-3
pool-1-thread-4
pool-1-thread-5