多執行緒技術主要解決處理器單元內多個執行緒執行的問題,它可以顯著減少處理器單元的閒置時間,增加處理器單元的吞吐能力。
執行緒池主要用來解決執行緒生命週期開銷問題和資源不足問題。通過對多個任務重用執行緒,執行緒建立的開銷就被分攤到了多個任務上了,而且由於在請求到達時執行緒已經存在,所以消除了執行緒建立所帶來的延遲。這樣,就可以立即為請求服務,使應用程式響應更快。另外,通過適當地調整執行緒池中的執行緒數目可以防止出現資源不足的情況。
jdk5中提供的executors工具類可以通過4個靜態方法建立4種執行緒池,如下所示:
它接收schduledfuturetask型別的任務,有兩種提交任務的方式:
表示延遲3秒執行。
scheduledthreadpool.scheduleatfixedrate(new runnable()
}, 1, 3, timeunit.seconds);
表示延遲1秒後每3秒執行一次。
scheduledexecutorservice比timer更安全,功能更強大。
(4)executors.newsinglethreadexecutor();
public static executorservice newsinglethreadexecutor()
建立乙個單執行緒化的執行緒池,它只會用唯一的工作執行緒來執行任務,保證所有任務按照指定順序(fifo, lifo, 優先順序)執行。
executorservice singlethreadexecutor = executors.newsinglethreadexecutor();
for (int i = 0; i < 10; i++) catch (interruptedexception e)
}});
}
結果依次輸出,相當於順序執行各個任務。
現行大多數gui程式都是單執行緒的。
執行緒池的作用:
減少了建立和銷毀執行緒的次數,每個工作執行緒都可以被重複利用,可執行多個任務。根 據系統的環境情況,可以自動或手動設定執行緒數量,從而達到執行的最佳效果。
posted @
2018-05-09 13:00
奔跑在夢想的道路上 閱讀(
...)
編輯收藏
執行緒池 Executors類建立執行緒池
executors靜態工廠建立幾種常用執行緒池 1.建立了乙個固定執行緒數量的執行緒池,可以控制線程最大併發數,超出的執行緒會在佇列中等待。newfixedthreadpool int nthreads 執行緒池中線程數量是要指定傳入的,注意在固定大小的執行緒池中使用的阻塞佇列是linkedbloc...
executors建立執行緒池
private static final executor exec executors.newfixedthreadpool 50 runnable runnable new runnable exec.execute runnable callablecallable new callable ...
Executors建立執行緒池
兩個靜態方法 executorservice exec executors.newcachethreadpool 這個方式會為每個任務建立乙個執行緒。executorservice exec executors.newfixedthreadpool 10 建立10個執行緒的執行緒池。執行某個實現ru...