线程池饱和策略
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
1.Abort策略:默認(rèn)策略,新任務(wù)提交時(shí)直接拋出未檢查的異常RejectedExecutionException,該異常可由調(diào)用者捕獲。
new ThreadPoolExecutor.AbortPolicy()2.CallerRuns策略:為調(diào)節(jié)機(jī)制,既不拋棄任務(wù)也不拋出異常,而是將某些任務(wù)回退到調(diào)用者。不會(huì)在線程池的線程中執(zhí)行新的任務(wù),而是在調(diào)用exector的線程中運(yùn)行新的任務(wù)。
new ThreadPoolExecutor.CallerRunsPolicy()3.Discard策略:新提交的任務(wù)被拋棄。
new ThreadPoolExecutor.DiscardPolicy()4.DiscardOldest策略:隊(duì)列的是“隊(duì)頭”的任務(wù),然后嘗試提交新的任務(wù)。對(duì)頭任務(wù)被丟棄(不適合工作隊(duì)列為優(yōu)先隊(duì)列場(chǎng)景)
new ThreadPoolExecutor.DiscardOldestPolicy()5.自定義飽和處理策略
import java.util.concurrent.RejectedExecutionHandler; import java.util.concurrent.ThreadPoolExecutor;/*** 循環(huán),當(dāng)隊(duì)列有空位時(shí),該任務(wù)進(jìn)入隊(duì)列,等待線程池處理*/ public class TestRejectedExecutionHandler implements RejectedExecutionHandler {public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {try {executor.getQueue().put(r);} catch (InterruptedException e) {e.printStackTrace();}}}?
轉(zhuǎn)載于:https://my.oschina.net/u/943316/blog/1601595
總結(jié)
- 上一篇: PHP百杂
- 下一篇: JavaScript 中 JSON.pa