Executors Executor 區別:java
Executor 是一個接口ide
Executors 是一個類,初始化不一樣的線程池this
ExecutorService 繼承 Executor 即接口繼承接口, 添加了不少額外的方法,好比中止一個線程池spa
線程池的種類:
線程
1. newFixedThreadPool(int nThreads) 缺點固定數量的線程池,有可能浪費飛、多餘的資源code
2. newCachedThreadPool 根據任務的能力啓動線程池的數量,啓動的線程過大,會壓死機器繼承
3. newScheduledThreadPool相似於timer接口
4. newSingleThreadScheduledExecutor 一個固定大小的線程池隊列
newCachedThreadPool 缺點說明 /* 重運行結果上看,當線程數是10000 的時候,i 的值都會輸出,可是當 i 的最大值是20000 的時候機器就會卡死 說明: newCachedThreadPool 內部沒有線程隊列的,來多少任務,啓動多少個線程 */ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class CachePoll { public static class C1 implements Runnable{ int i =0; public C1(int i){ this.i = i ;} @Override public void run() { System.out.println(i); while(true){ try { Thread.sleep(10); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } public static void main(String[] args) { ExecutorService es = Executors.newCachedThreadPool(); for(int i=0; i < 20000; i++){ es.execute(new C1(i)); } } }