å¨Javaç¼ç çè¿ç¨ä¸ï¼æ们ç»å¸¸ä¼å建ä¸ä¸ªçº¿ç¨æ¥æé«ç¨åºçæ§è¡æçï¼è½ç¶è¿æ ·å®ç°èµ·æ¥å¾æ¹ä¾¿ï¼ä½æ¯ä¼æä¸ä¸ªé®é¢ï¼å¦æ并åç线ç¨æ°å¤ï¼å¹¶ä¸æ¯ä¸ªçº¿ç¨é½æ¯æ§è¡ä¸ä¸ªæ¶é´å¾ççä»»å¡å°±ç»æäºï¼è¿æ ·ä¼é æé¢ç¹çå建åéæ¯çº¿ç¨ä»è导è´éä½ç³»ç»çæçã
é£ä¹é®é¢æ¥äºï¼æ没æåæ³å¯ç¨å¤ç¨å建好ç线ç¨å¢ï¼ä¹å°±æ¯çº¿ç¨æ§è¡å®ä¸ä¸ªä»»å¡åï¼ä¸è¢«éæ¯ï¼ç»§ç»æ§è¡å
¶ä»çä»»å¡ï¼
å¨Javaå¯ä»¥éè¿çº¿ç¨æ± æ¥å®ç°è¿æ ·çææã
ä¸é¢ä»ä¸ä¸ªæ¹é¢å大家ä¸èµ·æ¥æ¢è®¨ä¸ä¸Java线ç¨æ± ç¸å
³çå
容ã
1.Javaä¸çThreadPoolExecutorç±»ã
2.Javaä¸4ç§çº¿ç¨æ± ç使ç¨ã
3.Java线ç¨æ± 常ç¨åæ°å¦ä½è®¾ç½®ã
ä¸ãJavaä¸çThreadPoolExecutorç±»
A.ThreadPoolExecutorçéè¦åæ°
1.corePoolSizeï¼æ ¸å¿çº¿ç¨æ°
æ ¸å¿çº¿ç¨ä¼ä¸ç´åæ´»ï¼åæ¶æ²¡æä»»å¡éè¦æ§è¡ã
å½çº¿ç¨æ°å°äºæ ¸å¿çº¿ç¨æ°æ¶ï¼å³ä½¿æ线ç¨ç©ºé²ï¼çº¿ç¨æ± ä¹ä¼ä¼å
å建æ°çº¿ç¨å¤çã
设置allowCoreThreadTimeout=trueï¼é»è®¤falseï¼æ¶ï¼æ ¸å¿çº¿ç¨ä¼è¶
æ¶å
³éã
2.queueCapacityï¼ä»»å¡éå容éï¼é»å¡éåï¼
å½æ ¸å¿çº¿ç¨æ°è¾¾å°æ大æ¶ï¼æ°ä»»å¡ä¼æ¾å¨éåä¸æéçå¾
æ§è¡ã
3.maxPoolSizeï¼æ大线ç¨æ°
å½çº¿ç¨æ°>=corePoolSizeï¼ä¸ä»»å¡éå已满æ¶ã线ç¨æ± ä¼å建æ°çº¿ç¨æ¥å¤çä»»å¡ã
å½çº¿ç¨æ°=maxPoolSizeï¼ä¸ä»»å¡éå已满æ¶ï¼çº¿ç¨æ± ä¼æç»å¤çä»»å¡èæåºå¼å¸¸ã
4.keepAliveTimeï¼çº¿ç¨ç©ºé²æ¶é´
å½çº¿ç¨ç©ºé²æ¶é´è¾¾å°keepAliveTimeæ¶ï¼çº¿ç¨ä¼éåºï¼ç´å°çº¿ç¨æ°é=corePoolSizeã
å¦æallowCoreThreadTimeout=trueï¼åä¼ç´å°çº¿ç¨æ°é=0ã
5.allowCoreThreadTimeoutï¼å
è®¸æ ¸å¿çº¿ç¨è¶
æ¶
6.rejectedExecutionHandlerï¼ä»»å¡æç»å¤çå¨ã
B.ThreadPoolExecutoræ§è¡è¿ç¨
1.å½çº¿ç¨æ°å°äºæ ¸å¿çº¿ç¨æ°æ¶ï¼å建线ç¨ã
2.å½çº¿ç¨æ°å¤§äºçäºæ ¸å¿çº¿ç¨æ°ï¼ä¸ä»»å¡éåæªæ»¡æ¶ï¼å°ä»»å¡æ¾å
¥ä»»å¡éåã
3.å½çº¿ç¨æ°å¤§äºçäºæ ¸å¿çº¿ç¨æ°ï¼ä¸ä»»å¡éå已满ã(1)è¥çº¿ç¨æ°å°äºæ大线ç¨æ°ï¼å建线ç¨ã(2)è¥çº¿ç¨æ°çäºæ大线ç¨æ°ï¼æåºå¼å¸¸ï¼æç»ä»»å¡ã
äºãJavaä¸4ç§çº¿ç¨æ±
Javaéè¿Executorsæä¾åç§çº¿ç¨æ± ï¼åå«ä¸ºï¼
newCachedThreadPoolå建ä¸ä¸ªå¯ç¼å线ç¨æ± ï¼å¦æ线ç¨æ± é¿åº¦è¶
è¿å¤çéè¦ï¼å¯çµæ´»åæ¶ç©ºé²çº¿ç¨ï¼è¥æ å¯åæ¶ï¼åæ°å»ºçº¿ç¨ã
newFixedThreadPool å建ä¸ä¸ªå®é¿çº¿ç¨æ± ï¼å¯æ§å¶çº¿ç¨æ大并åæ°ï¼è¶
åºç线ç¨ä¼å¨éåä¸çå¾
ã
newScheduledThreadPool å建ä¸ä¸ªå®é¿çº¿ç¨æ± ï¼æ¯æå®æ¶åå¨ææ§ä»»å¡æ§è¡ã
newSingleThreadExecutor å建ä¸ä¸ªå线ç¨åç线ç¨æ± ï¼å®åªä¼ç¨å¯ä¸çå·¥ä½çº¿ç¨æ¥æ§è¡ä»»å¡ï¼ä¿è¯ææä»»å¡æç
§æå®é¡ºåº(FIFO, LIFO, ä¼å
级)æ§è¡ã
温馨提示:答案为网友推荐,仅供参考