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
便可以執行新加入的線程
但是 , 我在后面加了新的執行 , 他會編譯的時候跳過需要等待的線程 , 並不斷嘗試 , 直到可以執行 .
所以 , 一定要注意 , 后面 的動作要執行, 先判斷前面的動作是否執行完畢
他不會阻塞后面你想要執行的