java学习与总结:线程池
生活随笔
收集整理的這篇文章主要介紹了
java学习与总结:线程池
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- 7個(gè)參數(shù)
- 最重要的三個(gè)參數(shù)
- 其他常見參數(shù)
- 創(chuàng)建方式
- Executor【阿里巴巴開發(fā)手冊強(qiáng)制不允許次方法創(chuàng)建線程】
- ThreadPoolExecutor【阿里巴巴建議創(chuàng)建線程方法】
- 飽和策略 handler
- 線程池excute方法
- Runnable接口和Callable接口的區(qū)別
- execute方法和submit方法的區(qū)別
7個(gè)參數(shù)
最重要的三個(gè)參數(shù)
- maximumPoolSize 最大線程數(shù)
- corePoolSize 核心線程數(shù)
- workQueue 工作隊(duì)列
其他常見參數(shù)
- keepAliveTime 非核心線程結(jié)束任務(wù)后的存活時(shí)間
- unit 時(shí)間單位
- threadFactory
- handler 飽和策略
創(chuàng)建方式
Executor【阿里巴巴開發(fā)手冊強(qiáng)制不允許次方法創(chuàng)建線程】
- newCachedThreadPool(),允許創(chuàng)建大量的線程,導(dǎo)致OOM
- newFixedThreadPool(),運(yùn)行的請求隊(duì)列長度為Integer.Max_Value,從而導(dǎo)致OOM
- newScheduledThreadPool(),允許創(chuàng)建大量的線程,導(dǎo)致OOM
- newSingleThreadPool(),運(yùn)行的請求隊(duì)列長度為Integer.Max_Value,從而導(dǎo)致OOM
缺點(diǎn):不夠靈活,可能會(huì)OOM。
ThreadPoolExecutor【阿里巴巴建議創(chuàng)建線程方法】
ThreadPoolExecutor(x,x,x,x,x,x,x)
飽和策略 handler
1.AbortPolicy 拋棄異常,拒絕新任務(wù)
2.CallerRunsPolicy 調(diào)用當(dāng)前執(zhí)行的線程執(zhí)行任務(wù)
3. DiscardPolicy 不處理,直接丟棄
4. DiscardOlddestPolicy 丟棄最早未處理的任務(wù)
線程池excute方法
Runnable接口和Callable接口的區(qū)別
Runnable先有,Callable后有,引入目的是未來處理Runnable不支持的用例
- 返回結(jié)果
- 拋出異常
execute方法和submit方法的區(qū)別
- 會(huì)返回一個(gè)Future對象,通過這個(gè)對象判斷是否執(zhí)行成功。
- 通過Future對象的get方法,但是會(huì)阻塞當(dāng)前線程知道任務(wù)執(zhí)行成功為止 - 也可以直接使用get(long timeout, TimeUnit unit)方法,會(huì)阻塞一段時(shí)間后立即返回,這個(gè)時(shí)候可能任務(wù)沒有執(zhí)行完成
總結(jié)
以上是生活随笔為你收集整理的java学习与总结:线程池的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java学习与总结:反射及动态代理
- 下一篇: java学习与总结:计算机网络