# Java å¤çº¿ç¨å¸¸è§é®é¢ ## ä¸ä¸æåæ¢ å¤çº¿ç¨å¹¶ä¸ä¸å®æ¯è¦å¨å¤æ ¸å¤çå¨ææ¯æçï¼å°±ç®æ¯åæ ¸ä¹æ¯å¯ä»¥æ¯æå¤çº¿ç¨çã CPU éè¿ç»æ¯ä¸ªçº¿ç¨åé ä¸å®çæ¶é´çï¼ç±äºæ¶é´é常çé常æ¯å 忝«ç§ï¼æä»¥ CPU å¯ä»¥ä¸åçåæ¢çº¿ç¨æ§è¡ä»»å¡ä»èè¾¾å°äºå¤çº¿ç¨çææã 使¯ç±äºå¨çº¿ç¨åæ¢çæ¶åéè¦ä¿åæ¬æ¬¡æ§è¡çä¿¡æ¯([详è§](https://github.com/crossoverJie/Java-Interview/blob/master/MemoryAllocation.md#%E7%A8%8B%E5%BA%8F%E8%AE%A1%E6%95%B0%E5%99%A8))ï¼å¨è¯¥çº¿ç¨è¢« CPU å¥å¤ºæ¶é´çåå忬¡è¿è¡æ¢å¤ä¸æ¬¡æä¿åçä¿¡æ¯çè¿ç¨å°±æä¸ºä¸ä¸æåæ¢ã > ä¸ä¸æåæ¢æ¯é常èæççã é常æä»¥ä¸è§£å³æ¹æ¡: - éç¨æ éç¼ç¨ï¼æ¯å¦å°æ°æ®æç § `Hash(id)` è¿è¡åæ¨¡åæ®µï¼æ¯ä¸ªçº¿ç¨å¤çåèªåæ®µçæ°æ®ï¼ä»èé¿å 使ç¨éã - éç¨ CAS(compare and swap) ç®æ³ï¼å¦ `Atomic` å å°±æ¯éç¨ CAS ç®æ³([详è§](https://github.com/crossoverJie/Java-Interview/blob/master/Threadcore.md#%E5%8E%9F%E5%AD%90%E6%80%A7))ã - åççå建线ç¨ï¼é¿å å建äºä¸äºçº¿ç¨ä½å ¶ä¸å¤§é¨å齿¯åºäº `waiting` ç¶æï¼å 为æ¯å½ä» `waiting` ç¶æåæ¢å° `running` ç¶æé½æ¯ä¸æ¬¡ä¸ä¸æåæ¢ã ## æ»é æ»éçåºæ¯ä¸è¬æ¯ï¼çº¿ç¨ A åçº¿ç¨ B é½å¨äºç¸çå¾ å¯¹æ¹éæ¾éï¼æè æ¯å ¶ä¸æä¸ªçº¿ç¨å¨éæ¾éçæ¶ååºç°å¼å¸¸å¦æ»å¾ªç¯ä¹ç±»çãè¿æ¶å°±ä¼å¯¼è´ç³»ç»ä¸å¯ç¨ã 常ç¨çè§£å³æ¹æ¡å¦ä¸ï¼ - å°½éä¸ä¸ªçº¿ç¨åªè·åä¸ä¸ªéã - ä¸ä¸ªçº¿ç¨åªå ç¨ä¸ä¸ªèµæºã - å°è¯ä½¿ç¨å®æ¶éï¼è³å°è½ä¿è¯éæç»ä¼è¢«éæ¾ã ## èµæºéå¶ å½å¨å¸¦å®½æéçæ åµä¸ä¸ä¸ªçº¿ç¨ä¸è½½æä¸ªèµæºéè¦ `1M/S`,å½å¼ 10 ä¸ªçº¿ç¨æ¶é度并ä¸ä¼ä¹ 10 åï¼åèè¿ä¼å¢å æ¶é´ï¼æ¯ç«ä¸ä¸æåæ¢æ¯è¾èæ¶ã 妿æ¯åéäºèµæºçè¯å¯ä»¥éç¨é群æ¥å¤çä»»å¡ï¼ä¸åçæºå¨æ¥å¤çä¸åçæ°æ®ï¼å°±ç±»ä¼¼äºå¼å§æå°çæ éç¼ç¨ã