ä½ å¥½ï¼æå¯ä»¥ç»ä½ 详ç»è§£éä¸ä¸ï¼
线ç¨ç»è¡¨ç¤ºä¸ä¸ªçº¿ç¨çéåãæ¤å¤ï¼çº¿ç¨ç»ä¹å¯ä»¥å
å«å
¶ä»çº¿ç¨ç»ã线ç¨ç»ææä¸æ£µæ ï¼å¨æ ä¸ï¼é¤äºåå§çº¿ç¨ç»å¤ï¼æ¯ä¸ªçº¿ç¨ç»é½æä¸ä¸ªç¶çº¿ç¨ç»ã
å
许线ç¨è®¿é®æå
³èªå·±ç线ç¨ç»çä¿¡æ¯ï¼ä½æ¯ä¸å
许å®è®¿é®æå
³å
¶çº¿ç¨ç»çç¶çº¿ç¨ç»æå
¶ä»ä»»ä½çº¿ç¨ç»çä¿¡æ¯ã
线ç¨æ± ï¼æ们å¯ä»¥æ并åæ§è¡çä»»å¡ä¼ éç»ä¸ä¸ªçº¿ç¨æ± ï¼æ¥æ¿ä»£ä¸ºæ¯ä¸ªå¹¶åæ§è¡çä»»å¡é½å¯å¨ä¸ä¸ªæ°ç线ç¨ãåªè¦æ± éæ空é²ç线ç¨ï¼ä»»å¡å°±ä¼åé
ç»ä¸ä¸ªçº¿ç¨æ§è¡ãå¨çº¿ç¨æ± çå
é¨ï¼ä»»å¡è¢«æå
¥ä¸ä¸ªé»å¡éåï¼Blocking Queue ï¼ï¼çº¿ç¨æ± éç线ç¨ä¼å»åè¿ä¸ªéåéçä»»å¡ãå½ä¸ä¸ªæ°ä»»å¡æå
¥éåæ¶ï¼ä¸ä¸ªç©ºé²çº¿ç¨å°±ä¼æåçä»éåä¸ååºä»»å¡å¹¶ä¸æ§è¡å®ã
线ç¨æ± ç»å¸¸åºç¨å¨å¤çº¿ç¨æå¡å¨ä¸ãæ¯ä¸ªéè¿ç½ç»å°è¾¾æå¡å¨çè¿æ¥é½è¢«å
è£
æä¸ä¸ªä»»å¡å¹¶ä¸ä¼ éç»çº¿ç¨æ± ã线ç¨æ± ç线ç¨ä¼å¹¶åçå¤çè¿æ¥ä¸ç请æ±ã以åä¼åæ·±å
¥æå
³ Java å®ç°å¤çº¿ç¨æå¡å¨çç»èã
线ç¨éåï¼æ¯æ线ç¨å¤äºæ¥å¡çæ¶åå½¢æçè°åº¦éå
æéæä¸ç§éç¨çç¥ï¼
ç´æ¥æ交ãå·¥ä½éåçé»è®¤éé¡¹æ¯ SynchronousQueueï¼å®å°ä»»å¡ç´æ¥æ交ç»çº¿ç¨èä¸ä¿æå®ä»¬ãå¨æ¤ï¼å¦æä¸åå¨å¯ç¨äºç«å³è¿è¡ä»»å¡ç线ç¨ï¼åè¯å¾æä»»å¡å å
¥éåå°å¤±è´¥ï¼å æ¤ä¼æé ä¸ä¸ªæ°ç线ç¨ãæ¤çç¥å¯ä»¥é¿å
å¨å¤çå¯è½å
·æå
é¨ä¾èµæ§ç请æ±éæ¶åºç°éãç´æ¥æ交é常è¦æ±æ ç maximumPoolSizes 以é¿å
æç»æ°æ交çä»»å¡ãå½å½ä»¤ä»¥è¶
è¿éåæè½å¤ççå¹³åæ°è¿ç»å°è¾¾æ¶ï¼æ¤çç¥å
许æ ç线ç¨å
·æå¢é¿çå¯è½æ§ã
æ çéåã使ç¨æ çéåï¼ä¾å¦ï¼ä¸å
·æé¢å®ä¹å®¹éç LinkedBlockingQueueï¼å°å¯¼è´å¨ææcorePoolSize 线ç¨é½å¿æ¶æ°ä»»å¡å¨éåä¸çå¾
ãè¿æ ·ï¼å建ç线ç¨å°±ä¸ä¼è¶
è¿ corePoolSizeãï¼å æ¤ï¼maximumPoolSizeçå¼ä¹å°±æ æäºãï¼å½æ¯ä¸ªä»»å¡å®å
¨ç¬ç«äºå
¶ä»ä»»å¡ï¼å³ä»»å¡æ§è¡äºä¸å½±åæ¶ï¼éåäºä½¿ç¨æ çéåï¼ä¾å¦ï¼å¨ Web页æå¡å¨ä¸ãè¿ç§æéå¯ç¨äºå¤çç¬æçªå请æ±ï¼å½å½ä»¤ä»¥è¶
è¿éåæè½å¤ççå¹³åæ°è¿ç»å°è¾¾æ¶ï¼æ¤çç¥å
许æ ç线ç¨å
·æå¢é¿çå¯è½æ§ã
æçéåãå½ä½¿ç¨æéç maximumPoolSizesæ¶ï¼æçéåï¼å¦ ArrayBlockingQueueï¼æå©äºé²æ¢èµæºèå°½ï¼ä½æ¯å¯è½è¾é¾è°æ´åæ§å¶ãéå大å°åæå¤§æ± å¤§å°å¯è½éè¦ç¸äºæè¡·ï¼ä½¿ç¨å¤§åéååå°åæ± å¯ä»¥æ大é度å°éä½ CPU 使ç¨çãæä½ç³»ç»èµæºåä¸ä¸æåæ¢å¼éï¼ä½æ¯å¯è½å¯¼è´äººå·¥éä½ååéãå¦æä»»å¡é¢ç¹é»å¡ï¼ä¾å¦ï¼å¦æå®ä»¬æ¯ I/Oè¾¹çï¼ï¼åç³»ç»å¯è½ä¸ºè¶
è¿æ¨è®¸å¯çæ´å¤çº¿ç¨å®ææ¶é´ã使ç¨å°åéåé常è¦æ±è¾å¤§çæ± å¤§å°ï¼CPU使ç¨çè¾é«ï¼ä½æ¯å¯è½éå°ä¸å¯æ¥åçè°åº¦å¼éï¼è¿æ ·ä¹ä¼éä½ååéã
追ç亲ï¼è®°å¾é纳ä¸ä¸å¦