ThreadPoolExecutor 實現固定大小線程池


1. 線程是可以有生命周期的,一般命令執行完就會自動退出

package com;

import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;

public class MyThreadPool {

    public static void main(String [] args){
        int num = 20;
        ThreadPoolExecutor pool = (ThreadPoolExecutor) Executors.newFixedThreadPool(num);;
        for (int i = 0 ; i<num ; i++){
            int s = i;
            Runnable run = new Runnable() {
                public void run() {
                    try {
                        Thread.sleep(4000);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            };
            pool.execute(run);
        }

      pool.execute(() -> System.out.println(System.currentTimeMillis()));

      System.out.println(2);
      System.out.println(3);
      System.out.println(4);
      System.out.println(5);
      System.out.println(6);
 } }

 

 

我這里是新建20個線程放入線程池 , 每個線程的功能都是等待 4秒 ,所以在4秒后 , 線程池的大小為 0

便可以執行新加入的線程

但是 , 我在后面加了新的執行 , 他會編譯的時候跳過需要等待的線程 , 並不斷嘗試 , 直到可以執行 .

所以 , 一定要注意 , 后面 的動作要執行, 先判斷前面的動作是否執行完畢

他不會阻塞后面你想要執行的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM