# Java çº¿ç¨ å¨ Java é¢åï¼å®ç°å¹¶åç¨åºçä¸»è¦ææ®µå°±æ¯å¤çº¿ç¨ãçº¿ç¨æ¯æä½ç³»ç»éçä¸ä¸ªæ¦å¿µï¼è½ç¶åç§ä¸åçå¼åè¯è¨å¦ JavaãC# çé½å¯¹å ¶è¿è¡äºå°è£ ï¼ä½æ¯ä¸åä¸ç¦»æä½ç³»ç»ãJava è¯è¨éççº¿ç¨æ¬è´¨ä¸å°±æ¯æä½ç³»ç»ç线ç¨ï¼å®ä»¬æ¯ä¸ä¸å¯¹åºçã ## 线ç¨çå½å¨æ 卿ä½ç³»ç»å±é¢ï¼çº¿ç¨ä¹æâçèç æ»âï¼ä¸ä¸ç说æ³å«æçå½å¨æãå¯¹äºæçå½å¨æçäºç©ï¼è¦å¦å¥½å®ï¼æè·¯é常ç®åï¼åªè¦è½ææçå½å¨æä¸å个èç¹çç¶æè½¬æ¢æºå¶å°±å¯ä»¥äºã Java è¯è¨ä¸çº¿ç¨å ±æå ç§ç¶æï¼å嫿¯ï¼ - NEWï¼åå§åç¶æï¼ - RUNNABLEï¼å¯è¿è¡ / è¿è¡ç¶æï¼ - BLOCKEDï¼é»å¡ç¶æï¼ - WAITINGï¼æ æ¶éçå¾ ï¼ - TIMED_WAITINGï¼ææ¶éçå¾ ï¼ - TERMINATEDï¼ç»æ¢ç¶æï¼ ## å建å¤å°çº¿ç¨ ### 为ä»ä¹è¦ä½¿ç¨å¤çº¿ç¨ï¼ 使ç¨å¤çº¿ç¨ï¼æ¬è´¨ä¸å°±æ¯æåç¨åºæ§è½ãä¸è¿æ¤å»è°å°çæ§è½ï¼å¯è½å¨ä½ èæµ·éè¿æ¯æ¯è¾ç¬¼ç»çï¼åºæ¬ä¸å°±æ¯å¿«ãå¿«ãå¿«ï¼è¿ç§æ æ³åº¦éçææ§è®¤è¯å¾ä¸ç§å¦ï¼æä»¥å¨æåæ§è½ä¹åï¼é¦è¦é®é¢æ¯ï¼å¦ä½åº¦éæ§è½ã åº¦éæ§è½çææ æå¾å¤ï¼ä½æ¯æä¸¤ä¸ªææ æ¯ææ ¸å¿çï¼å®ä»¬å°±æ¯**å»¶è¿**å**ååé**ã å»¶è¿æçæ¯ååºè¯·æ±å°æ¶å°ååºè¿ä¸ªè¿ç¨çæ¶é´ï¼å»¶è¿è¶çï¼æå³çç¨åºæ§è¡å¾è¶å¿«ï¼æ§è½ä¹å°±è¶å¥½ã ååéæçæ¯å¨å使¶é´å è½å¤ç请æ±çæ°éï¼ååéè¶å¤§ï¼æå³çç¨åºè½å¤çç请æ±è¶å¤ï¼æ§è½ä¹å°±è¶å¥½ã è¿ä¸¤ä¸ªææ å 鍿ä¸å®çèç³»ï¼åçæ¡ä»¶ä¸ï¼å»¶è¿è¶çï¼ååéè¶å¤§ï¼ï¼ä½æ¯ç±äºå®ä»¬é¶å±ä¸åç维度ï¼ä¸ä¸ªæ¯æ¶é´ç»´åº¦ï¼ä¸ä¸ªæ¯ç©ºé´ç»´åº¦ï¼ï¼å¹¶ä¸è½äºç¸è½¬æ¢ã æä»¬æè°æåæ§è½ï¼ä»åº¦éçè§åº¦ï¼ä¸»è¦æ¯éä½å»¶è¿ï¼æé«ååéãè¿ä¹æ¯æä»¬ä½¿ç¨å¤çº¿ç¨ç主è¦ç®çãé£æä»¬è¯¥æä¹éä½å»¶è¿ï¼æé«ååéå¢ï¼è¿ä¸ªå°±è¦ä»å¤çº¿ç¨çåºç¨åºæ¯è¯´èµ·äºã ### å¤çº¿ç¨çåºç¨åºæ¯ è¦æ³âéä½å»¶è¿ï¼æé«ååéâï¼å¯¹åºçæ¹æ³å¢ï¼åºæ¬ä¸æä¸¤ä¸ªæ¹åï¼**ä¸ä¸ªæ¹åæ¯ä¼åç®æ³ï¼å¦ä¸ä¸ªæ¹åæ¯å°ç¡¬ä»¶çæ§è½åæ¥å°æè´**ãåè å±äºç®æ³èç´ï¼åè 忝åå¹¶åç¼ç¨æ¯æ¯ç¸å ³äºãé£è®¡ç®æºä¸»è¦æåªäºç¡¬ä»¶å¢ï¼ä¸»è¦æ¯ä¸¤ç±»ï¼ä¸ä¸ªæ¯ I/Oï¼ä¸ä¸ªæ¯ CPUãç®è¨ä¹ï¼å¨å¹¶åç¼ç¨é¢åï¼æåæ§è½æ¬è´¨ä¸å°±æ¯æå硬件çå©ç¨çï¼åå ·ä½ç¹æ¥è¯´ï¼å°±æ¯æå I/O çå©ç¨çå CPU çå©ç¨çã 估计è¿ä¸ªæ¶åä½ ä¼æä¸ªçé®ï¼æä½ç³»ç»ä¸æ¯å·²ç»è§£å³äºç¡¬ä»¶çå©ç¨çé®é¢äºåï¼çç¡®æ¯è¿æ ·ï¼ä¾å¦æä½ç³»ç»å·²ç»è§£å³äºç£çåç½å¡çå©ç¨çé®é¢ï¼å©ç¨ä¸ææºå¶è¿è½é¿å CPU 轮询 I/O ç¶æï¼ä¹æåäº CPU çå©ç¨çã使¯æä½ç³»ç»è§£å³ç¡¬ä»¶å©ç¨çé®é¢ç对象å¾å¾æ¯åä¸ç硬件设å¤ï¼èæä»¬çå¹¶åç¨åºï¼å¾å¾éè¦ CPU å I/O 设å¤ç¸äºé åå·¥ä½ï¼ä¹å°±æ¯è¯´ï¼æä»¬éè¦è§£å³ CPU å I/O 设å¤ç»¼åå©ç¨ççé®é¢ãå ³äºè¿ä¸ªç»¼åå©ç¨ççé®é¢ï¼æä½ç³»ç»è½ç¶æ²¡æåæ³å®ç¾è§£å³ï¼ä½æ¯å´ç»æä»¬æä¾äºæ¹æ¡ï¼é£å°±æ¯ï¼å¤çº¿ç¨ã ä¸é¢æä»¬ç¨ä¸ä¸ªç®åçç¤ºä¾æ¥è¯´æï¼å¦ä½å©ç¨å¤çº¿ç¨æ¥æå CPU å I/O 设å¤çå©ç¨çï¼å设ç¨åºæç § CPU 计ç®å I/O æä½äº¤åæ§è¡çæ¹å¼è¿è¡ï¼èä¸ CPU 计ç®å I/O æä½çèæ¶æ¯ 1:1ã å¦ä¸å¾æç¤ºï¼å¦æåªæä¸ä¸ªçº¿ç¨ï¼æ§è¡ CPU 计ç®çæ¶åï¼I/O 设å¤ç©ºé²ï¼æ§è¡ I/O æä½çæ¶åï¼CPU 空é²ï¼æä»¥ CPU çå©ç¨çå I/O 设å¤çå©ç¨ç齿¯ 50%ã  妿æä¸¤ä¸ªçº¿ç¨ï¼å¦ä¸å¾æç¤ºï¼å½çº¿ç¨ A æ§è¡ CPU 计ç®çæ¶åï¼çº¿ç¨ B æ§è¡ I/O æä½ï¼å½çº¿ç¨ A æ§è¡ I/O æä½çæ¶åï¼çº¿ç¨ B æ§è¡ CPU 计ç®ï¼è¿æ · CPU çå©ç¨çå I/O 设å¤çå©ç¨çå°±é½è¾¾å°äº 100%ã  æä»¬å° CPU çå©ç¨çå I/O 设å¤çå©ç¨ç齿åå°äº 100%ï¼ä¼å¯¹æ§è½äº§çäºåªäºå½±åå¢ï¼éè¿ä¸é¢çå¾ç¤ºï¼å¾å®¹æçåºï¼å使¶é´å¤ççè¯·æ±æ°éç¿»äºä¸çªï¼ä¹å°±æ¯è¯´ååéæé«äº 1 åãæ¤æ¶å¯ä»¥éåæç»´ä¸ä¸ï¼**妿 CPU å I/O 设å¤çå©ç¨çé½å¾ä½ï¼é£ä¹å¯ä»¥å°è¯éè¿å¢å çº¿ç¨æ¥æé«ååé**ã å¨åæ ¸æ¶ä»£ï¼å¤çº¿ç¨ä¸»è¦å°±æ¯ç¨æ¥å¹³è¡¡ CPU å I/O 设å¤çã妿ç¨åºåªæ CPU 计ç®ï¼è没æ I/O æä½çè¯ï¼å¤çº¿ç¨ä¸ä½ä¸ä¼æåæ§è½ï¼è¿ä¼ä½¿æ§è½å徿´å·®ï¼åå æ¯å¢å äºçº¿ç¨åæ¢çææ¬ã使¯å¨å¤æ ¸æ¶ä»£ï¼è¿ç§çº¯è®¡ç®åçç¨åºä¹å¯ä»¥å©ç¨å¤çº¿ç¨æ¥æåæ§è½ã为ä»ä¹å¢ï¼å 为å©ç¨å¤æ ¸å¯ä»¥éä½ååºæ¶é´ã 为便äºä½ çè§£ï¼è¿éæä¸¾ä¸ªç®åçä¾å说æä¸ä¸ï¼è®¡ç® 1+2+⦠⦠+100 亿çå¼ï¼å¦æå¨ 4 æ ¸ç CPU ä¸å©ç¨ 4 ä¸ªçº¿ç¨æ§è¡ï¼çº¿ç¨ A 计ç®[1ï¼25 亿)ï¼çº¿ç¨ B 计ç®[25 亿ï¼50 亿)ï¼çº¿ç¨ C 计ç®[50ï¼75 亿)ï¼çº¿ç¨ D 计ç®[75 亿ï¼100 亿]ï¼ä¹åæ±æ»ï¼é£ä¹ç论ä¸åºè¯¥æ¯ä¸ä¸ªçº¿ç¨è®¡ç®[1ï¼100 亿]å¿«å°è¿ 4 åï¼ååºæ¶é´è½å¤éå° 25%ãä¸ä¸ªçº¿ç¨ï¼å¯¹äº 4 æ ¸ç CPUï¼CPU çå©ç¨çåªæ 25%ï¼è 4 个线ç¨ï¼åè½å¤å° CPU çå©ç¨çæé«å° 100%ã  ### å建å¤å°çº¿ç¨åéï¼ å建å¤å°çº¿ç¨åéï¼è¦çå¤çº¿ç¨å ·ä½çåºç¨åºæ¯ãæä»¬çç¨åºä¸è¬é½æ¯ CPU 计ç®å I/O æä½äº¤åæ§è¡çï¼ç±äº I/O 设å¤çé度ç¸å¯¹äº CPU æ¥è¯´é½å¾æ ¢ï¼æä»¥å¤§é¨åæ åµä¸ï¼I/O æä½æ§è¡çæ¶é´ç¸å¯¹äº CPU è®¡ç®æ¥è¯´é½é常é¿ï¼è¿ç§åºæ¯æä»¬ä¸è¬é½ç§°ä¸º I/O å¯éå计ç®ï¼å I/O å¯éå计ç®ç¸å¯¹çå°±æ¯ CPU å¯éå计ç®äºï¼CPU å¯éå计ç®å¤§é¨ååºæ¯ä¸é½æ¯çº¯ CPU 计ç®ãI/O å¯éåç¨åºå CPU å¯éåç¨åºï¼è®¡ç®æä½³çº¿ç¨æ°çæ¹æ³æ¯ä¸åçã ä¸é¢æä»¬å¯¹è¿ä¸¤ä¸ªåºæ¯åå«è¯´æã å¯¹äº CPU å¯éå计ç®ï¼å¤çº¿ç¨æ¬è´¨ä¸æ¯æå夿 ¸ CPU çå©ç¨çï¼æä»¥å¯¹äºä¸ä¸ª 4 æ ¸ç CPUï¼æ¯ä¸ªæ ¸ä¸ä¸ªçº¿ç¨ï¼ç论ä¸å建 4 个线ç¨å°±å¯ä»¥äºï¼åå¤å建线ç¨ä¹åªæ¯å¢å 线ç¨åæ¢çææ¬ã æä»¥ï¼**å¯¹äº CPU å¯éåç计ç®åºæ¯ï¼ç论ä¸â线ç¨çæ°é =CPU æ ¸æ°âå°±æ¯æåéçãä¸è¿å¨å·¥ç¨ä¸ï¼çº¿ç¨çæ°éä¸è¬ä¼è®¾ç½®ä¸ºâCPU æ ¸æ° +1â**ï¼è¿æ ·çè¯ï¼å½çº¿ç¨å 为å¶å°çå å页失ææå ¶ä»åå 导è´é»å¡æ¶ï¼è¿ä¸ªé¢å¤ç线ç¨å¯ä»¥é¡¶ä¸ï¼ä»èä¿è¯ CPU çå©ç¨çã å¯¹äº I/O å¯éåç计ç®åºæ¯ï¼æ¯å¦å颿们çä¾åä¸ï¼å¦æ CPU 计ç®å I/O æä½çèæ¶æ¯ 1:1ï¼é£ä¹ 2 ä¸ªçº¿ç¨æ¯æåéçã妿 CPU 计ç®å I/O æä½çèæ¶æ¯ 1:2ï¼é£å¤å°ä¸ªçº¿ç¨åéå¢ï¼æ¯ 3 个线ç¨ï¼å¦ä¸å¾æç¤ºï¼CPU å¨ AãBãC ä¸ä¸ªçº¿ç¨ä¹é´åæ¢ï¼å¯¹äºçº¿ç¨ Aï¼å½ CPU ä» BãC 忢忥æ¶ï¼çº¿ç¨ A æ£å¥½æ§è¡å® I/O æä½ãè¿æ · CPU å I/O 设å¤çå©ç¨çé½è¾¾å°äº 100%ã  éè¿ä¸é¢è¿ä¸ªä¾åï¼æä»¬ä¼åç°ï¼å¯¹äº I/O å¯éå计ç®åºæ¯ï¼æä½³ççº¿ç¨æ°æ¯ä¸ç¨åºä¸ CPU 计ç®å I/O æä½çèæ¶æ¯ç¸å ³çï¼æä»¬å¯ä»¥æ»ç»åºè¿æ ·ä¸ä¸ªå ¬å¼ï¼ æä½³çº¿ç¨æ° =1 +ï¼I/O èæ¶ / CPU èæ¶ï¼ æä»¬ä»¤ R=I/O èæ¶ / CPU èæ¶ï¼ç»¼åä¸å¾ï¼å¯ä»¥è¿æ ·çè§£ï¼å½çº¿ç¨ A æ§è¡ IO æä½æ¶ï¼å¦å¤ R ä¸ªçº¿ç¨æ£å¥½æ§è¡å®åèªç CPU 计ç®ãè¿æ · CPU çå©ç¨ç就达å°äº 100%ã ä¸è¿ä¸é¢è¿ä¸ªå ¬å¼æ¯éå¯¹åæ ¸ CPU çï¼è³äºå¤æ ¸ CPUï¼ä¹å¾ç®åï¼åªéè¦çæ¯æ©å¤§å°±å¯ä»¥äºï¼è®¡ç®å ¬å¼å¦ä¸ï¼ æä½³çº¿ç¨æ° =CPU æ ¸æ° * [ 1 +ï¼I/O èæ¶ / CPU èæ¶ï¼] ### æ»ç» å¾å¤äººé½ç¥éçº¿ç¨æ°ä¸æ¯è¶å¤è¶å¥½ï¼ä½æ¯è®¾ç½®å¤å°æ¯åéçï¼å´åæ¿ä¸å®ä¸»æãå ¶å®åªè¦ææ¡ä½ä¸æ¡ååå°±å¯ä»¥äºï¼è¿æ¡ååå°±æ¯å°ç¡¬ä»¶çæ§è½åæ¥å°æè´ãä¸é¢æä»¬é对 CPU å¯éåå I/O å¯éå计ç®åºæ¯é½ç»åºäºç论ä¸çæä½³å ¬å¼ï¼è¿äºå ¬å¼èåçç®æ å ¶å®å°±æ¯å°ç¡¬ä»¶çæ§è½åæ¥å°æè´ã å¯¹äº I/O å¯éå计ç®åºæ¯ï¼I/O èæ¶å CPU èæ¶çæ¯å¼æ¯ä¸ä¸ªå ³é®åæ°ï¼ä¸å¹¸çæ¯è¿ä¸ªåæ°æ¯æªç¥çï¼è䏿¯å¨æååçï¼æä»¥å·¥ç¨ä¸ï¼æä»¬è¦ä¼°ç®è¿ä¸ªåæ°ï¼ç¶åååç§ä¸ååºæ¯ä¸çåæµæ¥éªè¯æä»¬ç估计ãä¸è¿å·¥ç¨ä¸ï¼ååè¿æ¯å°ç¡¬ä»¶çæ§è½åæ¥å°æè´ï¼æä»¥åæµæ¶ï¼æä»¬éè¦éç¹å ³æ³¨ CPUãI/O 设å¤çå©ç¨çåæ§è½ææ ï¼ååºæ¶é´ãååéï¼ä¹é´çå ³ç³»ã ## 为ä»ä¹å±é¨åéæ¯çº¿ç¨å®å ¨ç