ExecutorService 簡單使用

小弟我前段時間看了一下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);
		}
		
	}
相關文章
相關標籤/搜索