09章 - 線程池

new Thread 弊端

  1. 每次new Thread新建對象,性能差
  2. 線程缺乏統(tǒng)一管理,可能無限制的新建線程,相互競爭,有可能占用過多系統(tǒng)資源導致死機或OOM
  3. 缺少更多功能,如更多執(zhí)行,定期執(zhí)行,線程中斷

線程池好處

  1. 重用存在的線程,減少對象創(chuàng)建、消亡的開銷,性能差
  2. 可有效控制最大并發(fā)線程數(shù),提高系統(tǒng)資源利用率,同時可以避免過多資源競爭,避免阻塞
  3. 提供定時執(zhí)行、定期執(zhí)行、單線程、并發(fā)數(shù)控制等功能

線程池 - 參數(shù)

corePoolSize: 核心線程數(shù)量
maximumPoolSize:線程最大線程數(shù)
workQueue:阻塞隊列,存儲等待執(zhí)行的任務(wù),很重要,會對線程池運行過程產(chǎn)生重大影響
keepAliveTime:線程沒有任務(wù)執(zhí)行時最多保持多久時間終止
unit:keepAliveTime的時間單位
threadFactory:線程工廠,用來創(chuàng)建線程
rejectHandler:當拒絕處理任務(wù)時的策略

線程池 - ThreadPoolExecutor

execute():提交任務(wù),交給線程池執(zhí)行
submit():提交任務(wù),能夠返回執(zhí)行結(jié)果 execute+Future
shutdown():關(guān)閉線程池,等待人物都執(zhí)行完
shutdownNow():關(guān)閉線程池,不等待任務(wù)執(zhí)行完
getTaskCount():線程池已執(zhí)行和未執(zhí)行的任務(wù)總數(shù)
getCompletedTaskCount():已完成的人物數(shù)量
getPoolSize():線程池當前的線程數(shù)量
getAcitveCount():當前線程池中正在執(zhí)行任務(wù)的線程數(shù)量

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容