Java并发编程实践读书笔记(3)任务执行
?類似于Web服務(wù)器這種多任務(wù)情況時(shí),不可能只用一個(gè)線程來對(duì)外提供服務(wù)。這樣效率和吞吐量都太低。
但是也不能來一個(gè)請(qǐng)求就創(chuàng)建一個(gè)線程,因?yàn)閯?chuàng)建線程的成本很高,系統(tǒng)能創(chuàng)建的線程數(shù)量是有限的。
于是Executor就出現(xiàn)?了。
Executor框架
線程池的意義
線程創(chuàng)建太少了浪費(fèi)服務(wù)器資源,另外線程創(chuàng)建多了又搞得服務(wù)器很累。兩個(gè)極端的結(jié)果都是對(duì)外的吞吐量上不去。
所以線程是需要統(tǒng)一管理的,不能隨便new Thread().start()。
Executor提供了四種線程池。
?
ExecutorService管理功能
包括:關(guān)閉和強(qiáng)制關(guān)閉、是否關(guān)閉、是否中斷、等待中斷、提交任務(wù)、批量提交任務(wù)。
?
找出可利用的并行性
多個(gè)任務(wù)如果可以并行那最好就讓它并行:
通常,執(zhí)行時(shí)間相差很大的異構(gòu)任務(wù)的并行沒有意義,執(zhí)行時(shí)間受限于執(zhí)行時(shí)間最長(zhǎng)的那個(gè)任務(wù):
這種情況,要考慮的是把taskA給分解了。
ExecutorCompletionService可以批量提交任務(wù)并獲取執(zhí)行結(jié)果;
?
轉(zhuǎn)載于:https://www.cnblogs.com/at0x7c00/p/8134663.html
總結(jié)
以上是生活随笔為你收集整理的Java并发编程实践读书笔记(3)任务执行的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学习进度条(第六周)
- 下一篇: beego07----web博客