小弟我前段時間看了一下jdk的併發包。感受各類懵逼。每個能理解明白的。但仍是稍有體會一些的。java
這裏記錄一下ExecutorService 併發工具的使用吧。併發
簡單的說呢,這個類,是能夠對任務線程進行調度的。很是實用。能夠經過Executors的的靜態方法進行建立。這裏以ExecutorService es = Executors.newFixedThreadPool(5);爲例ide
意思是:建立一個指定容量的線程池,容量爲5,而且使這5個線程始終處於活躍狀態,當任務數量超過5個時,只能執行5個任務,剩下的任務,須要等池子中的線程將任務執行完畢後再執行,若是有線程由於執行任務失敗而終止運行,則會有新的閒置線程取代他執行任務(會不會致使全部線程都執行失敗而終止呢?)工具
public class ThreadPoolDemo { public static class MyTask implements Runnable{ @Override public void run() { System.out.println(System.currentTimeMillis() + ":thread ID " + Thread.currentThread().getId()); try{ Thread.sleep(1000); }catch(Exception e){ e.printStackTrace(); } } } public static void main(String[] args) { MyTask task = new MyTask(); //線程池中的任務和數據屬性時惟一的。有5個容量,一次就能執行5個。10個任務要分兩次執行, //在ExecutorService沒有shutDown時,線程池一直監控是否有任務,若是還有,則繼續執行,什麼時間執行不必定。 ExecutorService es = Executors.newFixedThreadPool(5); for(int i = 0; i < 11; i++){ es.submit(task); } }