kuangshenshuo-多執行緒-執行緒池

西西ANO發表於2020-10-21

多執行緒詳解 -> 執行緒池

  • 背景:經常建立和銷燬、使用量特別大的資源,比如併發情況下的執行緒,對效能影響很大
  • 思路:提前建立好多個執行緒,放入執行緒池中,使用時直接獲取,使用完放回池中。可以避免頻繁建立銷燬,實現重複利用。
  • 好處:
    • 提高響應速度(減少了建立執行緒的時間)
    • 降低資源消耗(重複利用執行緒池中執行緒,不需要每次都建立)
    • 便於執行緒管理
  • JDK5.0提供了執行緒池相關API:
    • import java.util.concurrent.ExecutorService;
    • import java.util.concurrent.Executors;
  • ExecutorService:真正的執行緒池介面,常見子類ThreadPoolExecutor
    • void execute(Runnable command):執行任務/命令,沒有返回值,一般用來執行Runnable
    • Future submit(Callable task):執行任務,有返回值,一般用來執行Callable
    • void shutdown():關閉連線池
  • Executors:工具類、執行緒池的工廠類,用於建立並返回不同型別的執行緒池
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
//測試執行緒池
public class TestPool {
    public static void main(String[] args) {
        //1.建立服務,建立執行緒池
        //newFixedThreadPool(int nThreads)引數為執行緒池大小
        ExecutorService service = Executors.newFixedThreadPool(10);
        //執行
        service.execute(new MyThread());
        service.execute(new MyThread());
        service.execute(new MyThread());
        service.execute(new MyThread());
        service.execute(new MyThread());

        //2.關閉連線
        service.shutdown();
    }
}

class MyThread implements Runnable{
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName());
    }
}

相關文章