?????????????Doug Lea??????JDK1.5????JCU??????????????С?????????á?????????????????????????????????е???á????????????????Hook????????????????????????漰???Щ?????????????????????С?????????????????????????????????????????????????????????????????????????????
????ExecutorService????????????????????????????????????????Executors?????????????????ThreadPoolExecutor?????
????????????????????1??????????????????????????????????????????????д???????????????????????2?????????????????????????????е???????????????????????????ThreadPoolExecutor???????????????????統(tǒng)??ж???????????????
??????????
???????????????????????????????????????ThreadPoolExecutor??????????????????????????????????????????????????????Executors?????Щ?????????????????ThreadPoolExecutor????????磺
????1?????Executors#newCachedThreadPool????????????????????????????????????????????
????2?????Executors#newFixedThreadPool??????????????????????С???????
????3?????Executors#newSingleThreadExecutor????????????????????????????
??????????????????????????????????????????????????????????????????????????????
???????????????С????????????????
????ThreadPoolExecutor?????corePoolSize??maximumPoolSize???????????????С:poolSize??
?????????????executor?????????????????????????漸????
????1?????????????????е?????????С??corePoolSize?????′???????μ??????????????????????????????????????????????????????
????2????????????б?corePoolSize???????maximumPoolSizeС??????????????????????????????У????????????????????????£?a???????????????????У????????????????μ???????????????е??????????????0??????????μ????????????????п???????????????????????????????????????
????b??????????????????????????μ????????
????3?????corePoolSize??maximumPoolSize?????????????С???????
????4???????maximumPoolSize??????????????????????????????????
????5?????????????????????????????????????????????????????á?
???????????WarmUp
???????????£?????????????????????????????????????????????????????????????????дprestartCoreThread??prestartCoreThreads???????????????????????????????????????????????WarmUp?????????????????????????????е???????ó??????????????????????
??????????????????
?????μ?????????ThreadFactory????????????????????????Executors#defaultThreadFactory????????????????????????????????????飬???????????????daemon???????????ThreadFactory????????????????????????????daemon???????????ThreadFactory#createThread???????????????null??executor??????????κ?????
??????????????
???????????????е?????????????corePoolSize?????????????????????????е???????keepAliveTime??????Щ?????????????????????????????????????????????????????????????????????????????????????????????????????????allowCoreThreadTimeout??????
???????????????????
???????е????????ж???????????????????????ò??????????corePoolSize??????????????
?????????й????????С??corePoolSize??????????????????????????μ????????
?????????й???????????????corePoolSize?????????????????????????????????????У???????????????????
???????????????????????????????С??maximumPoolSize?????????????????????
??????????????????в??????:
?????????????????????????????SynchronousQueue????????????????????????????????????????С?????????й??????????????????????????????????????????????????μ????????????????????????????????????????????????????????????????????????????????????????????????????????????unbounded???????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????У????????????LinkedBlockingQueue??????????????????????????????????????????μ???????????????????????????д???corePoolSize???????????????maximumPoolSize???????Ч?????????????????е?????????????????????С?????????????????????У????????????????????????????????С???????????????????????е??????????
?????н???У??н??????ArrayBlockingQueue??????????????????????????????????г????maximumPoolSize?????????????????????к?СmaximumPoolSize?????CPU????á???????????????????л?????????????????????????????????????????IO???????????????????????????С?????????????maximumPoolSize????????CPU????Щ????????????????????????????????????????????IO????????????Щ????????CPU??????CPU?????????????Щ??????????????????