Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
JAVA¶àÏß³ÌÓë²¢·¢Ñ§Ï°×ܽá
 
×÷ÕߣºœRïL À´Ô´£º²©¿ÍÔ° ·¢²¼ÓÚ 2015-8-12
  3620  次浏览      32
 

1. ¼ÆËã»úϵͳ

ʹÓøßËÙ»º´æÀ´×÷ΪÄÚ´æÓë´¦ÀíÆ÷Ö®¼äµÄ»º³å£¬½«ÔËËãÐèÒªÓõ½µÄÊý¾Ý¸´ÖƵ½»º´æÖУ¬ÈüÆËãÄÜ¿ìËÙ½øÐУ»µ±ÔËËã½áÊøºóÔÙ´Ó»º´æÍ¬²½»ØÄÚ´æÖ®ÖУ¬ÕâÑù´¦ÀíÆ÷¾ÍÎÞÐèµÈ´ý»ºÂýµÄÄÚ´æ¶ÁдÁË¡£

»º´æÒ»ÖÂÐÔ£º¶à´¦ÀíÆ÷ϵͳÖУ¬ÒòΪ¹²ÏíͬһÖ÷Äڴ棬µ±¶à¸ö´¦ÀíÆ÷µÄÔËËãÈÎÎñ¶¼Éè¼Æµ½Í¬Ò»¿éÄÚ´æÇøÓòʱ£¬½«¿ÉÄܵ¼Ö¸÷×ԵĻº´æÊý¾Ý²»Ò»ÖµÄÇé¿ö£¬Ôòͬ²½»ØÖ÷ÄÚ´æÊ±ÐèÒª×ñѭһЩЭÒé¡£

ÂÒÐòÖ´ÐÐÓÅ»¯£ºÎªÁËʹµÃ´¦ÀíÆ÷ÄÚ²¿µÄÔËË㵥λÄܾ¡Á¿±»³ä·ÖÀûÓá£

2. JAVAÄÚ´æÄ£ÐÍ

Ä¿±êÊǶ¨Òå³ÌÐòÖи÷¸ö±äÁ¿µÄ·ÃÎʹæÔò¡£(°üÀ¨ÊµÀý×ֶΡ¢¾²Ì¬×ֶκ͹¹³ÉÊý×éµÄÔªËØ£¬²»°üÀ¨¾Ö²¿±äÁ¿ºÍ·½·¨²ÎÊý)

1.ËùÓеıäÁ¿¶¼´æ´¢ÔÚÖ÷ÄÚ´æÖÐ(ÐéÄâ»úÄÚ´æµÄÒ»²¿·Ö)¡£

2.ÿÌõÏ̶߳¼ÓÉ×Ô¼ºµÄ¹¤×÷Äڴ棬Ï̵߳Ť×÷ÄÚ´æÖб£´æÁ˸ÃÏß³ÌʹÓõ½µÄ±äÁ¿µÄÖ÷Äڴ渱±¾¿½±´£¬Ï̶߳ԱäÁ¿µÄËùÓвÙ×÷¶¼±ØÐëÔÚ¹¤×÷ÄÚ´æÖнøÐУ¬¶ø²»ÄÜÖ±½Ó¶ÁдÖ÷ÄÚ´æÖеıäÁ¿¡£

3.Ïß³ÌÖ®¼äÎÞ·¨Ö±½Ó·ÃÎʶԷ½µÄ¹¤×÷ÄÚ´æÖеıäÁ¿£¬Ï̼߳ä±äÁ¿µÄ´«µÝ¾ùÐèҪͨ¹ýÖ÷ÄÚ´æÀ´Íê³É¡£

ÄÚ´æ¼ä½»»¥²Ù×÷£º

Lock(Ëø¶¨)£º×÷ÓÃÓÚÖ÷ÄÚ´æÖеıäÁ¿£¬°ÑÒ»¸ö±äÁ¿±êʶΪһÌõÏ̶߳ÀÕ¼µÄ״̬¡£

Read(¶ÁÈ¡)£º×÷ÓÃÓÚÖ÷ÄÚ´æÖеıäÁ¿£¬°ÑÒ»¸ö±äÁ¿µÄÖµ´ÓÖ÷ÄÚ´æ´«Êäµ½Ï̵߳Ť×÷ÄÚ´æÖС£

Load(¼ÓÔØ)£º×÷ÓÃÓÚ¹¤×÷ÄÚ´æÖеıäÁ¿£¬°Ñread²Ù×÷´ÓÖ÷ÄÚ´æÖеõ½µÄ±äÁ¿µÄÖµ·ÅÈ빤×÷ÄÚ´æµÄ±äÁ¿¸±±¾ÖС£

Use(ʹÓÃ)£º×÷ÓÃÓÚ¹¤×÷ÄÚ´æÖеıäÁ¿£¬°Ñ¹¤×÷ÄÚ´æÖÐÒ»¸ö±äÁ¿µÄÖµ´«µÝ¸øÖ´ÐÐÒýÇæ¡£

Assign(¸³Öµ)£º×÷ÓÃÓÚ¹¤×÷ÄÚ´æÖеıäÁ¿£¬°ÑÒ»¸ö´ÓÖ´ÐÐÒýÇæ½ÓÊÕµ½µÄÖµ¸³Öµ¸ø¹¤×÷ÄÚ´æÖеıäÁ¿¡£

Store(´æ´¢)£º×÷ÓÃÓÚ¹¤×÷ÄÚ´æÖеıäÁ¿£¬°Ñ¹¤×÷ÄÚ´æÖеÄÒ»¸ö±äÁ¿µÄÖµ´«Ë͵½Ö÷ÄÚ´æÖС£

Write(дÈë)£º×÷ÓÃÓÚÖ÷ÄÚ´æÖеıäÁ¿£¬°Ñstore²Ù×÷´Ó¹¤×÷ÄÚ´æÖеõ½µÄ±äÁ¿µÄÖµ·ÅÈëÖ÷ÄÚ´æµÄ±äÁ¿ÖС£

Unlock(½âËø)£º×÷ÓÃÓÚÖ÷ÄÚ´æÖеıäÁ¿£¬°ÑÒ»¸ö´¦ÓÚËø¶¨×´Ì¬µÄ±äÁ¿ÊͷųöÀ´£¬Ö®ºó¿É±»ÆäËüÏß³ÌËø¶¨¡£

¹æÔò£º

1.²»ÔÊÐíreadºÍload¡¢storeºÍwrite²Ù×÷Ö®Ò»µ¥¶À³öÏÖ¡£

2.²»ÔÊÐíÒ»¸öÏ̶߳ªÆú×î½üµÄassign²Ù×÷£¬±äÁ¿ÔÚ¹¤×÷ÄÚ´æÖиıäÁËÖ®ºó±ØÐë°Ñ¸Ã±ä»¯Í¬²½»ØÖ÷ÄÚ´æÖС£

3.²»ÔÊÐíÒ»¸öÏß³ÌûÓз¢Éú¹ýÈκÎassign²Ù×÷°ÑÊý¾Ý´ÓÏ̵߳Ť×÷ÄÚ´æÍ¬²½»ØÖ÷ÄÚ´æÖС£

4.Ò»¸öеıäÁ¿Ö»ÄÜÔÚÖ÷ÄÚ´æÖе®Éú¡£

5.Ò»¸ö±äÁ¿ÔÚͬһʱ¿ÌÖ»ÔÊÐíÒ»ÌõÏß³Ì¶ÔÆä½øÐÐlock²Ù×÷£¬µ«¿ÉÒÔ±»Í¬Ò»ÌõÏß³ÌÖØ¸´Ö´Ðжà´Î¡£

6.Èç¹û¶ÔÒ»¸ö±äÁ¿Ö´ÐÐlock²Ù×÷£¬½«»áÇå¿Õ¹¤×÷ÄÚ´æÖд˱äÁ¿µÄÖµ£¬ÔÚÖ´ÐÐÒýÇæÊ¹ÓÃÕâ¸ö±äÁ¿Ç°£¬ÐèÒªÖØÐÂÖ´ÐÐread¡¢load²Ù×÷¡£

7.Èç¹ûÒ»¸ö±äÁ¿ÊÂÏÈûÓб»lock²Ù×÷Ëø¶¨£¬Ôò²»ÔÊÐí¶ÔËüÖ´ÐÐunlock²Ù×÷¡£

8. ¶ÔÒ»¸ö±äÁ¿Ö´ÐÐunlock²Ù×÷ǰ£¬±ØÐëÏȰѸñäÁ¿Í¬²½»ØÖ÷ÄÚ´æÖС£

3. volatileÐͱäÁ¿

1.±£Ö¤´Ë±äÁ¿¶ÔËùÓÐÏ̵߳ĿɼûÐÔ¡£Ã¿ÌõÏß³ÌʹÓôËÀàÐͱäÁ¿Ç°¶¼ÐèÒªÏÈˢУ¬Ö´ÐÐÒýÇæ¿´²»µ½²»Ò»ÖµÄÇé¿ö¡£

ÔËËã½á¹û²¢²»ÒÀÀµ±äÁ¿µÄµ±Ç°Öµ¡¢»òÕßÈ·±£Ö»Óе¥Ò»µÄÏß³ÌÐ޸ıäÁ¿µÄÖµ¡£

±äÁ¿²»ÐèÒªÓëÆäËûµÄ״̬±äÁ¿¹²Í¬²ÎÓë²»±äÔ¼Êø¡£

1.½ûÖ¹Ö¸ÁîÖØÅÅÐòÓÅ»¯¡£ÆÕͨµÄ±äÁ¿½ö±£Ö¤ÔÚ·½·¨Ö´Ðйý³ÌÖÐËùÓÐÒÀÀµ¸³Öµ½á¹ûµÄµØ·½¶¼ÄÜ»ñÈ¡µ½ÕýÈ·µÄ½á¹û¡£¶ø²»Äܱ£Ö¤¸³Öµ²Ù×÷µÄ˳ÐòÓë³ÌÐò´úÂëÖеÄ˳ÐòÒ»Ö¡£

2.load±ØÐëÓëuseͬʱ³öÏÖ£»assignºÍstore±ØÐëͬʱ³öÏÖ¡£

4. Ô­×ÓÐÔ¡¢¿É¼ûÐÔÓëÓÐÐòÐÔ

Ô­×ÓÐÔ£º»ù±¾Êý¾ÝÀàÐ͵ķÃÎʶÁдÊǾ߱¸Ô­×ÓÐԵģ¬synchronized¿éÖ®¼äµÄ²Ù×÷Ò²¾ß±¸Ô­×ÓÐÔ¡£

¿É¼ûÐÔ£ºÖ¸µ±Ò»¸öÏß³ÌÐÞ¸ÄÁ˹²Ïí±äÁ¿µÄÖµ£¬ÆäËûÏß³ÌÄܹ»Á¢¼´µÃÖªÕâ¸öÐ޸ġ£synchronized(¹æÔò8)ºÍfinal¿ÉÒÔ±£Ö¤¿É¼ûÐÔ¡£FinalÐÞÊεÄ×Ö¶ÎÔÚ¹¹ÔìÆ÷ÖÐÒ»µ©±»³õʼ»¯Íê³É£¬²¢ÇÒ¹¹ÔìÆ÷ûÓаÑthisµÄÒýÓô«µÝ³öÈ¥£¬ÄÇôÔÚÆäËûÏß³ÌÖоÍÄÜ¿´¼ûfinal×ֶεÄÖµ¡£

ÓÐÐòÐÔ£ºvolatile±¾Éí°üº¬Á˽ûÖ¹Ö¸ÁîÖØÅÅÐòµÄÓïÒ壬¶øsynchronizedÔòÊÇÓɹæÔò5»ñµÃµÄ£¬Õâ¸ö¹æÔò¾ö¶¨Á˳ÖÓÐͬһ¸öËùµÄÁ½¸öͬ²½¿éÖ»ÄÜ´®ÐеؽøÈë¡£

5. ÏÈÐз¢ÉúÔ­Ôò

JavaÄÚ´æÄ£ÐÍÖж¨ÒåµÄÁ½Ïî²Ù×÷Ö®¼äµÄÆ«Ðò¹ØÏµ£¬Èç¹û²Ù×÷AÏÈÐз¢ÉúÓÚ²Ù×÷B£¬Æäʵ¾ÍÊÇ˵ÔÚ·¢Éú²Ù×÷B֮ǰ£¬²Ù×÷A²úÉúµÄÓ°ÏìÄܱ»²Ù×÷B¹Û²ìµ½¡£

³ÌÐò´ÎÐò¹æÔò£ºÔÚÒ»¸öÏß³ÌÄÚ£¬°´ÕÕ´úÂë¿ØÖÆÁ÷˳Ðò£¬ÔÚÇ°ÃæµÄ²Ù×÷ÏÈÐз¢ÉúÓÚºóÃæµÄ²Ù×÷¡£

¹Ü³ÌËø¶¨¹æÔò£ºÒ»¸öunlock²Ù×÷ÏÈÐз¢ÉúÓÚºóÃæ¶Ôͬһ¸öËøµÄlock²Ù×÷¡£

Volatile±äÁ¿¹æÔò£º¶ÔÒ»¸övolatile±äÁ¿µÄд²Ù×÷ÏÈÐз¢ÉúÓÚºóÃæ¶ÔÕâ¸ö±äÁ¿µÄ¶Á²Ù×÷¡£

Ïß³ÌÆô¶¯¹æÔò£ºThread¶ÔÏóµÄstart()·½·¨ÏÈÐз¢ÉúÓÚ´ËÏ̵߳Äÿ¸ö²Ù×÷¡£

Ïß³ÌÖÕÖ¹¹æÔò£ºÏß³ÌÖеÄËùÓвÙ×÷¶¼ÏÈÐз¢ÉúÓÚ¶Ô´ËÏ̵߳ÄÖÕÖ¹¼ì²â¡£

Ïß³ÌÖжϹæÔò£º¶ÔÏ̵߳Äinterrupt()·½·¨µÄµ÷ÓÃÏÈÐз¢ÉúÓÚ±»ÖжÏÏ̵߳ĴúÂë¼ì²âÖжÏʼþµÄ·¢Éú¡£

¶ÔÏóÖÕ½á¹ýÔò£ºÒ»¸ö¶ÔÏóµÄ³õʼ»¯Íê³ÉÏÈÐз¢ÉúÓÚËüµÄfinalize()·½·¨µÄ¿ªÊ¼¡£

´«µÝÐÔ£ºÈç¹û²Ù×÷AÏÈÐз¢ÉúÓÚ²Ù×÷B£¬²Ù×÷BÏÖÏó·¢ÉúÓÚ²Ù×÷C£¬ÄÇô¾Í¿ÉÒԵóö²Ù×÷AÏÈÐз¢ÉúÓÚ²Ù×÷CµÄ½áÂÛ¡£

ʱ¼äÉϵÄÏȺó˳ÐòÓëÏÈÐз¢ÉúÔ­ÔòÖ®¼ä»ù±¾ÉÏûÓÐÌ«´óµÄ¹ØÏµ¡£

6. Ïß³ÌʵÏÖ

ʹÓÃÄÚºËÏß³ÌʵÏÖ£º

ÄÚºËÏß³ÌKernel Thread£ºÖ±½ÓÓɲÙ×÷ϵͳÄÚºËÖ§³ÖµÄỊ̈߳¬ÕâÖÖÏß³ÌÓÉÄÚºËÀàÍê³ÉÏß³ÌÇл»£¬ÄÚºËͨ¹ý²Ù×ݵ÷¶ÈÆ÷¶ÔÏ߳̽øÐе÷¶È£¬²¢¸ºÔð½«Ï̵߳ÄÈÎÎñÓ³Éäµ½¸÷¸ö´¦ÀíÆ÷ÉÏ¡£

ÇáÁ¿¼¶½ø³ÌLight Weight Process£ºÃ¿¸öÇáÁ¿¼¶½ø³Ì¶¼ÓÉÒ»¸öÄÚºËÏß³ÌÖ§³Ö¡£

¾ÖÏÞÐÔ£º¸÷ÖÖ½ø³Ì²Ù×÷¶¼ÐèÒª½øÐÐϵͳµ÷ÓÃ(ϵͳµ÷Óôú¼ÛÏà¶Ô½Ï¸ß£¬ÐèÒªÔÚÓû§Ì¬ºÍÄÚºË̬ÖÐÀ´»ØÇл»)£»ÇáÁ¿¼¶½ø³ÌÒªÏûºÄÒ»¶¨µÄÄÚºË×ÊÔ´£¬Ò»´ÎÒ»¸öϵͳ֧³ÖÇáÁ¿¼¶½ø³ÌµÄÊýÁ¿ÊÇÓÐÏ޵ġ£

ʹÓÃÓû§Ïß³ÌʵÏÖ£º

Óû§Ị̈߳ºÍêÈ«½¨Á¢ÔÚÓû§¿Õ¼äµÄÏ߳̿âÉÏ£¬ÏµÍ³Äں˲»ÄÜÖ±½Ó¸ÐÖªµ½Ï̴߳æÔÚµÄʵÏÖ¡£Óû§Ï̵߳Ľ¨Á¢¡¢Í¬²½¡¢Ïú»ÙºÍµ÷¶ÈÍêÈ«ÔÚÓû§Ì¬ÖÐÍê³É£¬²»ÐèÒªÄں˵İïÖú¡£ËùÓеÄÏ̲߳Ù×÷¶¼ÐèÒªÓû§³ÌÐò×Ô¼º´¦Àí¡£

»ìºÏʵÏÖ£º

½«ÄÚºËÏ̺߳ÍÓû§Ïß³ÌÒ»ÆðʹÓõķ½Ê½¡£²Ù×÷ϵͳÌṩ֧³ÖµÄÇáÁ¿¼¶½ø³ÌÔò×÷ΪÓû§Ï̺߳ÍÄÚºËÏß³ÌÖ®¼äµÄÇÅÁº¡£

Sun JDK£¬ËüµÄWindows°æºÍLinux°æ¶¼ÊÇʹÓÃÒ»¶ÔÒ»µÄÏß³ÌÄ£ÐÍÀ´ÊµÏֵģ¬Ò»ÌõJavaÏß³ÌÓ³Éäµ½Ò»ÌõÇáÁ¿¼¶½ø³ÌÖ®ÖС£

7. Ï̵߳÷¶È

Ï̵߳÷¶ÈÊÇָϵͳΪÏ̷߳ÖÅä´¦ÀíÆ÷ʹÓÃȨµÄ¹ý³Ì£ºÐ­Í¬Ê½¡¢ÇÀռʽ¡£

Эͬʽ£ºÏ̵߳ÄÖ´ÐÐʱ¼äÓÉÏ̱߳¾Éí¿ØÖÆ£¬Ḭ̈߳Ñ×Ô¼ºµÄ¹¤×÷Ö´ÐÐÍêÁËÖ®ºó£¬ÒªÖ÷¶¯Í¨ÖªÏµÍ³Çл»µ½ÁíÒ»¸öÏß³ÌÉÏ¡£»µ´¦£ºÏß³ÌÖ´ÐÐʱ¼ä²»¿É¿ØÖÆ¡£

ÇÀռʽ£ºÃ¿¸öÏ߳̽«ÓÉϵͳÀ´·ÖÅäÖ´ÐÐʱ¼ä£¬Ï̵߳ÄÇл»²»ÓÉÏ̱߳¾ÉíÀ´¾ö¶¨¡£JavaʹÓøÃÖÖµ÷Ó÷½Ê½¡£

Ïß³ÌÓÅÏȼ¶£ºÔÚһЩƽ̨ÉÏ(²Ù×÷ϵͳÏß³ÌÓÅÏȼ¶±ÈJavaÏß³ÌÓÅÏȼ¶ÉÙ)²»Í¬µÄÓÅÏȼ¶Êµ¼Ê»á±äµÃÏàͬ£»ÓÅÏȼ¶¿ÉÄܻᱻϵͳ×ÔÐиı䡣

8. Ïß³Ì״̬

Ïß³Ì״̬£º

н¨NEW£º

ÔËÐÐRUNNABLE£º

ÎÞÏÞÆÚµÈ´ýWAITING£ºµÈµÃÆäËûÏß³ÌÏÔʽµØ»½ÐÑ¡£

ûÓÐÉèÖÃTimeout²ÎÊýµÄObject.wait()£»Ã»ÓÐÉèÖÃTimeout²ÎÊýµÄThread.wait()¡£

ÏÞÆÚµÈ´ýTIMED_WAITING£ºÔÚÒ»¶¨Ê±¼äÖ®ºó»áÓÉϵͳ×Ô¶¯»½ÐÑ¡£

ÉèÖÃTimeout²ÎÊýµÄObject.wait()£»ÉèÖÃTimeout²ÎÊýµÄThread.wait()£»Thread.sleep()·½·¨¡£

×èÈûBLOCKED£ºµÈ´ý»ñȡһ¸öÅÅËüËø£¬µÈ´ý½øÈëÒ»¸öͬ²½ÇøÓò¡£

½áÊøTERMINATED£º

9. Ḭ̈߳²È«

Ḭ̈߳²È«£ºµ±¶à¸öÏ̷߳ÃÎÊÒ»¸ö¶ÔÏóʱ£¬Èç¹û²»Óÿ¼ÂÇÕâЩÏß³ÌÔÚÔËÐÐʱ»·¾³Ïµĵ÷¶ÈºÍ½»»»Ö´ÐУ¬Ò²²»ÐèÒª½øÐжîÍâµÄͬ²½£¬»òÕßµ÷Ó÷½½øÐÐÈÎºÎÆäËûµÄЭµ÷²Ù×÷£¬µ÷ÓÃÕâ¸ö¶ÔÏóµÄÐÐΪ¶¼¿ÉÒÔ»ñµÃÕýÈ·µÄ½á¹û£¬ÄÇÕâ¸ö¶ÔÏó¾ÍÊÇḬ̈߳²È«µÄ¡£

²»¿É±ä£ºÖ»ÒªÒ»¸ö²»¿É±äµÄ¶ÔÏó±»ÕýÈ·µØ¹¹½¨³öÀ´¡£Ê¹ÓÃfinal¹Ø¼ü×ÖÐÞÊεĻù±¾Êý¾ÝÀàÐÍ£»Èç¹û¹²ÏíÊý¾ÝÊÇÒ»¸ö¶ÔÏó£¬ÄǾÍÐèÒª±£Ö¤¶ÔÏóµÄÐÐΪ²»»á¶ÔÆä״̬²úÉúÈκÎÓ°Ïì(StringÀàµÄ¶ÔÏó)¡£·½·¨£º°Ñ¶ÔÏóÖдøÓÐ״̬µÄ±äÁ¿¶¼ÉêÃ÷Ϊfinal£¬ÈçIntegerÀà¡£ÓУºÃ¶¾ÙÀàÐÍ¡¢NumberµÄ²¿·Ö×ÓÀà(AtomicIntegerºÍAtomicLong³ýÍâ)¡£

¾ø¶ÔḬ̈߳²È«£º

Ïà¶ÔḬ̈߳²È«£º¶ÔÕâ¸ö¶ÔÏóµ¥¶ÀµÄ²Ù×÷ÊÇḬ̈߳²È«µÄ¡£Ò»°ãÒâÒåÉϵÄḬ̈߳²È«¡£

Ï̼߳æÈÝ£ºÐèҪͨ¹ýµ÷ÓöËÕýÈ·µØÊ¹ÓÃͬ²½ÊÖ¶ÎÀ´±£Ö¤¶ÔÏóÔÚ²¢·¢»·¾³Öа²È«µØÊ¹Óá£

Ï̶߳ÔÁ¢£º²»¹Üµ÷ÓöËÊÇ·ñ²ÉÈ¡ÁËͬ²½´ëÊ©£¬¶¼ÎÞ·¨ÔÚ¶àÏ̻߳·¾³Öв¢·¢Ê¹ÓõĴúÂë¡£ÓУºSystem.setIn()¡¢System.setOut()¡¢System.runFinalizersOnExit()

10. Ḭ̈߳²È«µÄʵÏÖ·½·¨

1.1. »¥³âͬ²½£º

ͬ²½ÊÇÖ¸ÔÚ¶à¸öÏ̲߳¢·¢·ÃÎʹ²ÏíÊý¾Ýʱ£¬±£Ö¤¹²ÏíÊý¾ÝÔÚͬһ¸öʱ¿ÌÖ»±»Ò»ÌõÏß³ÌʹÓ᣻¥³â·½Ê½£ºÁÙ½çÇø¡¢»¥³âÁ¿ºÍÐźÅÁ¿¡£

Synchronized¹Ø¼ü×Ö£º±àÒëºó»áÔÚͬ²½¿éǰºó·Ö±ðÐγÉmonitorenterºÍmonitorexitÕâÁ½¸ö×Ö½ÚÂëÖ¸Áî¡£ÕâÁ½¸öÖ¸Áî¶¼ÐèÒªÒ»¸öÒýÓÃÀàÐ͵IJÎÊýÀ´Ö¸Ã÷ÒªËø¶¨ºÍ½âËøµÄ¶ÔÏó¡£Èç¹ûûÓÐÃ÷È·Ö¸¶¨¶ÔÏó²ÎÊý£¬ÄǾ͸ù¾ÝsynchronizedÐÞÊεÄÊÇʵÀý·½·¨»¹ÊÇÀà·½·¨£¬È¥È¡¶ÔÓ¦µÄ¶ÔÏóʵÀý»òClass¶ÔÏóÀ´×÷ÎªËø¶ÔÏó¡£

ÔÚÖ´ÐÐmonitorenterÖ¸Áîʱ£¬Ê×Ïȳ¢ÊÔ»ñÈ¡¶ÔÏóµÄËø£¬Èç¹ûûÓб»Ëø¶¨»òÕßµ±Ç°Ïß³ÌÒѾ­ÓµÓÐÁ˸öÔÏóµÄËø£¬Ôò½«Ëø¼ÆÊýÆ÷¼Ó1£¬ÏàÓ¦µÄÖ´ÐÐmoniterexitʱ£¬½«Ëø¼ÆÊýÆ÷¼õ1£¬µ±¼ÆÊýÆ÷Ϊ0ʱ£¬Ëø¾Í±»ÊÍ·ÅÁË¡£Èç¹û»ñÈ¡¶ÔÏóËøÊ§°Ü£¬Ôòµ±Ç°Ï߳̾ÍÒª×èÈûµÈ´ý¡£

ReentrantLockÏà¶ÔsynchronizedµÄ¸ß¼¶¹¦ÄÜ£º

µÈ´ý¿ÉÖжϣºµ±³ÖÓÐËøµÄÏ̳߳¤ÆÚ²»ÊÍ·ÅËøÊ±£¬ÕýÔڵȴýµÄÏ߳̿ÉÒÔÑ¡Ôñ·ÅÆúµÈ´ý£¬¸ÄΪ´¦ÀíÆäËûÊÂÇé¡£

¹«Æ½Ëø£º¶à¸öÏß³ÌÔڵȴýͬһ¸öËøÊ±£¬±ØÐë°´ÕÕÉêÇëËøµÄʼþ˳ÐòÀ´Ò»´Î»ñÈ¡Ëø£»¶ø·Ç¹«Æ½ËøÔÚ±»ÊÍ·Åʱ£¬ÈκÎÒ»¸öµÈ´ýËøµÄÏ̶߳¼Óлú»á»ñµÃËø¡£SynchronizedÖеÄËøÊǷǹ«Æ½Ëø£¬ReentrantLockĬÈÏÒ²ÊǷǹ«Æ½Ëø¡£

Ëø°ó¶¨¶à¸öÌõ¼þ£ºÒ»¸öReentrantLock¶ÔÏó¿ÉÒÔͬʱ°ó¶¨¶à¸öCondition¶ÔÏó¡£

1.2. ·Ç×èÈûͬ²½£º

»ùÓÚ³åÍ»¼ì²âµÄÀÖ¹Û²¢·¢²ßÂÔ£ºÏȽøÐвÙ×÷£¬Èç¹ûûÓÐÆäËûÏß³ÌÕùÓù²ÏíÊý¾Ý£¬ÄDzÙ×÷¾Í³É¹¦ÁË£»Èç¹û¹²ÏíÊý¾ÝÓÐÕùÓ㬲úÉúÁ˳åÍ»£¬ÄǾÍÔÙ½øÐÐÆäËûµÄ²¹³¥´ëÊ©(Ò»°ãÊDz»¶ÏµÄ³¢ÊÔ£¬Ö±µ½³É¹¦ÎªÖ¹)¡£

AtomicIntegerµÈÔ­×ÓÀàÖÐÌṩÁË·½·¨ÊµÏÖÁËCASÖ¸Áî¡£

1.3. ÎÞͬ²½·½°¸£º

¿ÉÖØÈë´úÂ룺¿ÉÒÔÔÚ´úÂëÖ´ÐеÄÈκÎʱ¿ÌÖжÏËü£¬×ª¶øÈ¥Ö´ÐÐÁíÒ»¶Î´úÂ룬¶øÔÚ¿ØÖÆÈ¨·µ»Øºó£¬Ô­À´µÄ³ÌÐò²»»á³öÏÖÈκδíÎó¡£ÌØÕ÷£º²»ÒÀÀµ´æ´¢ÔÚ¶ÑÉϵÄÊý¾ÝºÍ¹«ÓõÄϵͳ×ÊÔ´¡¢Óõ½µÄ״̬Á¿¶¼ÓɲÎÊý´«È룬²»µ÷Ó÷ǿÉÖØÈëµÄ·½·¨µÈ¡£Èç¹ûÒ»¸ö·½·¨£¬ËüµÄ·µ»Ø½á¹ûÊÇ¿ÉÒÔÔ¤²âµÄ£¬Ö»Òª³öÈëÁËÏàͬµÄÊý¾Ý£¬¾ÍÄÜ·µ»ØÏàͬµÄ½á¹û£¬ÄÇËü¾ÍÂú×ã¿ÉÖØÈëÐÔµÄÒªÇó¡£

Ï̱߳¾µØ´æ´¢£ºÈç¹ûÒ»¶Î´úÂëÖÐËùÐèÒªµÄÊý¾Ý±ØÐëÓëÆäËü´úÂë¹²Ïí£¬ÄǾͿ´¿´ÕâЩ¹²ÏíÊý¾ÝµÄ´úÂëÊÇ·ñÄܱ£Ö¤ÔÚͬһ¸öÏß³ÌÖÐÖ´ÐС£

A. ThreadLocalÀà

ThreadLocal£ºÏ̼߳¶±ðµÄ¾Ö²¿±äÁ¿£¬ÎªÃ¿¸öʹÓøñäÁ¿µÄÏß³ÌÌṩһ¸ö¶ÀÁ¢µÄ±äÁ¿¸±±¾£¬Ã¿¸öÏß³ÌÐ޸ĸ±±¾Ê±²»Ó°ÏìÆäËûÏ̶߳ÔÏóµÄ¸±±¾¡£ThreadLocalʵÀýͨ³£×÷Ϊ¾²Ì¬Ë½ÓÐ×ֶγöÏÖÔÚÒ»¸öÀàÖС£

11. ËøÓÅ»¯

1.1. ×ÔÐýËø

ΪÁËÈÃÏ̵߳ȴý£¬ÈÃÏß³ÌÖ´ÐÐÒ»¸öæѭ»·(×ÔÐý)¡£ÐèÒªÎïÀí»úÆ÷ÓÐÒ»¸öÒÔÉϵĴ¦ÀíÆ÷¡£×ÔÐýµÈ´ýËäÈ»±ÜÃâÁËÏß³ÌÇл»µÄ¿ªÏú£¬´øËüÊÇÒªÕ¼Óô¦ÀíÆ÷ʱ¼äµÄ£¬ËùÒÔÈç¹ûËø±»Õ¼ÓõÄʱ¼äºÜ¶Ì£¬×ÔÐýµÈ´ýµÄЧ¹û¾Í»á·Ç³£ºÃ£¬·´Ö®×ÔÐýµÄÏß³ÌÖ»»á°×°×ÏûºÄ´¦ÀíÆ÷×ÊÔ´¡£×ÔÐý´ÎÊýµÄĬÈÏÖµÊÇ10´Î£¬¿ÉÒÔʹÓòÎÊý-XX:PreBlockSpinÀ´¸ü¸Ä¡£

×ÔÊÊÓ¦×ÔÐýËø£º×ÔÐýµÄʱ¼ä²»Ôٹ̶¨£¬¶øÊÇÓÉǰһ´ÎÔÚͬһ¸öËøÉϵÄ×ÔÐýʱ¼ä¼°ËøµÄÓµÓÐÕßµÄ״̬À´¾ö¶¨¡£

1.2. ËøÇå³ý

Ö¸ÐéÄâ»ú¼´Ê±±àÒëÆ÷ÔÚÔËÐÐʱ£¬¶ÔһЩ´úÂëÉÏÒªÇóͬ²½£¬µ«ÊDZ»¼ì²âµ½²»¿ÉÄÜ´æÔÚ¹²ÏíÊý¾Ý¾ºÕùµÄËø½øÐÐÇå³ý(ÌÓÒÝ·ÖÎö¼¼Êõ£ºÔÚ¶ÑÉϵÄËùÓÐÊý¾Ý¶¼²»»áÌÓÒݳöÈ¥±»ÆäËüÏ̷߳ÃÎʵ½£¬¿ÉÒÔ°ÑËüÃǵ±³ÉÕ»ÉÏÊý¾Ý¶Ô´ý)¡£

1.3. Ëø´Ö»¯

Èç¹ûÐéÄâ»ú̽²âµ½ÓÐÒ»´®ÁãËéµÄ²Ù×÷¶¼¶Ôͬһ¸ö¶ÔÏó¼ÓËø£¬½«»á°Ñ¼ÓËøÍ¬²½µÄ·¶Î§À©Õ¹µ½Õû¸ö²Ù×÷ÐòÁеÄÍⲿ¡£

HotSpotÐéÄâ»úµÄ¶ÔÏóµÄÄÚ´æ²¼¾Ö£º¶ÔÏóÍ·(Object Header)·ÖΪÁ½²¿·ÖÐÅÏ¢Â𣬵ÚÒ»²¿·Ö(Mark Word)ÓÃÓÚ´æ´¢¶ÔÏó×ÔÉíµÄÔËÐÐʱÊý¾Ý£¬ÁíÒ»¸ö²¿·ÖÓÃÓÚ´æ´¢Ö¸Ïò·½·¨Çø¶ÔÏóÊý¾ÝÀàÐ͵ÄÖ¸Õ룬Èç¹ûÊÇÊý×éµÄ»°£¬»¹»áÓÉÒ»¸ö¶îÍâµÄ²¿·ÖÓÃÓÚ´æ´¢Êý×éµÄ³¤¶È¡£

32λHotSpotÐéÄâ»úÖжÔÏóδ±»Ëø¶¨µÄ״̬Ï£¬Mark WordµÄ32¸öBits¿Õ¼äÖÐ25λÓÃÓÚ´æ´¢¶ÔÏó¹þÏ£Â룬4λ´æ´¢¶ÔÏó·Ö´úÄêÁ䣬2λ´æ´¢Ëø±ê־룬1λ¹Ì¶¨Îª0¡£

HotSpotÐéÄâ»ú¶ÔÏóÍ·Mark Word

1.4. ÇáÁ¿¼¶Ëø

ÔÚ´úÂë½øÈëͬ²½¿éʱ£¬Èç¹û´Ëͬ²½¶ÔÏóûÓб»Ëø¶¨£¬ÐéÄâ»úÊ×ÏȽ«ÔÚµ±Ç°Ï̵߳ÄÕ»Ö¡Öн¨Á¢Ò»¸öÃûÎªËø¼Ç¼(Lock Record)µÄ¿Õ¼ä£¬ÓÃÓÚ´æ´¢Ëù¶ÔÏóĿǰµÄMark WordµÄ¿½±´¡£È»ºóÐéÄâ»ú½«Ê¹ÓÃCAS²Ù×÷³¢ÊÔ½«¶ÔÏóµÄMark Word¸üÐÂΪִÐÐLock RecordµÄÖ¸Õë¡£Èç¹û³É¹¦£¬ÄÇôÕâ¸öÏ߳̾ÍÓµÓÐÁ˸öÔÏóµÄËø¡£Èç¹û¸üвÙ×÷ʧ°Ü£¬ÐéÄâ»úÊ×ÏÈ»á¼ì²é¶ÔÏóµÄMark WordÊÇ·ñÖ¸Ïòµ±Ç°Ï̵߳ÄÕ»Ö¡£¬Èç¹ûÊǾÍ˵Ã÷µ±Ç°Ïß³ÌÒѾ­ÓµÓÐÁËÕâ¸ö¶ÔÏóµÄËø£¬·ñÔò˵Ã÷Õâ¸ö¶ÔÏóÒѾ­±»ÆäËüÏß³ÌÇÀÕ¼¡£Èç¹ûÓÐÁ½ÌõÒÔÉϵÄÏß³ÌÕùÓÃͬһ¸öËø£¬ÄÇÇáÁ¿¼¶Ëø¾Í²»ÔÙÓÐЧ£¬ÒªÅòÕÍÎªÖØÁ¿¼¶Ëø¡£

½âËø¹ý³Ì£ºÈç¹û¶ÔÏóµÄMark WordÈÔȻָÏò×ÅÏ̵߳ÄËø¼Ç¼£¬ÄǾÍÓÃCAS²Ù×÷°Ñ¶ÔÏóµ±Ç°µÄMark WordºÍºÍÏß³ÌÖи´ÖƵÄDisplaced Mark WordÌæ»»»ØÀ´£¬Èç¹ûÌæ»»³É¹¦£¬Õû¸ö¹ý³Ì¾ÍÍê³É¡£Èç¹ûʧ°Ü£¬ËµÃ÷ÓÐÆäËûÏ̳߳¢ÊÔ¹ý»ñÈ¡¸ÃËø£¬ÄǾÍÒªÔÚÊÍ·ÅËøµÄͬʱ£¬»½Ðѱ»¹ÒÆðµÄÏ̡߳£

ÇáÁ¿¼¶ËøµÄÒÀ¾Ý£º¶ÔÓÚ¾ø´ó²¿·ÖµÄËø£¬ÔÚÕû¸öͬ²½ÖÜÆÚÄÚ¶¼ÊDz»´æÔÚ¾ºÕùµÄ¡£

´«Í³Ëø(ÖØÁ¿¼¶Ëø)ʹÓòÙ×÷ϵͳ»¥³âÁ¿À´ÊµÏֵġ£

1.5. Æ«ÏòËø

Ä¿µÄÊÇÏû³ýÔÚÎÞ¾ºÕùÇé¿öϵÄͬ²½Ô­Ó½øÒ»²½Ìá¸ß³ÌÐòµÄÔËÐÐÐÔÄÜ¡£Ëø»áÆ«ÏòµÚÒ»¸ö»ñµÃËüµÄỊ̈߳¬Èç¹ûÔÚ½ÓÏÂÀ´µÄÖ´Ðйý³ÌÖУ¬¸ÃËøÃ»Óб»ÆäËüÏ̻߳ñÈ¡£¬Ôò³ÖÓÐËøµÄÏ߳̽«ÓÀÔ¶²»ÐèÒªÔÙ½øÐÐͬ²½¡£

µ±ËøµÚÒ»´Î±»Ï̻߳ñÈ¡µÄʱºò£¬ÐéÄâ»ú½«»á°Ñ¶ÔÏóÍ·Öеıê־λÉèΪ01£¬Í¬Ê±Ê¹ÓÃCAS²Ù×÷°Ñ»ñÈ¡µ½Õâ¸öËøµÄÏ̵߳ÄID¼Ç¼ÔÚ¶ÔÏóµÄMark WordÖ®ÖУ¬Èç¹û³É¹¦£¬³ÖÓÐÆ«ÏòËøµÄÏß³ÌÒÔºóÿ´Î½øÈëÕâ¸öËøÏà¹ØµÄͬ²½¿éʱ£¬¶¼¿ÉÒÔ²»½øÐÐÈκÎͬ²½²Ù×÷¡£

µ±ÓÐÁíÒ»¸öÏß³ÌÈ¥³¢ÊÔ»ñÈ¡Õâ¸öËøÊ±£¬Æ«Ïòģʽ¾ÍÐû¸æ½áÊø¡£¸ù¾ÝËù¶ÔÏóĿǰÊÇ·ñ´¦ÓÚ±»Ëø¶¨µÄ״̬£¬³·ÏúÆ«Ïòºó»Ö¸´µ½Î´Ëø¶¨»òÇáÁ¿¼¶Ëø¶¨×´Ì¬¡£

12. ÄÚºË̬ºÍÓû§Ì¬

²Ù×÷ϵͳµÄÁ½ÖÖÔËÐм¶±ð£¬intel cpuÌṩ-Ring3ÈýÖÖÔËÐÐģʽ¡£

Ring0ÊÇÁô¸ø²Ù×÷ϵͳ´úÂ룬É豸Çý¶¯³ÌÐò´úÂëʹÓõģ¬ËüÃǹ¤×÷ÓÚϵͳºËÐÄ̬£»¶øRing3Ôò¸øÆÕͨµÄÓû§³ÌÐòʹÓã¬ËüÃǹ¤×÷ÔÚÓû§Ì¬¡£ÔËÐÐÓÚ´¦ÀíÆ÷ºËÐÄ̬µÄ´úÂë²»ÊÜÈκεÄÏÞÖÆ£¬¿ÉÒÔ×ÔÓɵطÃÎÊÈκÎÓÐЧµØÖ·£¬½øÐÐÖ±½Ó¶Ë¿Ú·ÃÎÊ¡£¶øÔËÐÐÓÚÓû§Ì¬µÄ´úÂëÔòÒªÊܵ½´¦ÀíÆ÷µÄÖî¶à¼ì²é£¬ËüÃÇÖ»ÄÜ·ÃÎÊÓ³ÉäÆäµØÖ·¿Õ¼äµÄÒ³±íÏîÖй涨µÄÔÚÓû§Ì¬Ï¿ɷÃÎÊÒ³ÃæµÄÐéÄâµØÖ·£¬ÇÒÖ»ÄܶÔÈÎÎñ״̬¶Î£¨TSS£©ÖÐI/OÐí¿Éλͼ£¨I/O Permission Bitmap£©Öй涨µÄ¿É·ÃÎʶ˿ڽøÐÐÖ±½Ó·ÃÎÊ¡£

13. ³£Ó÷½·¨

1.1. object.wait()£º

ÔÚÆäËûÏ̵߳÷Óô˶ÔÏóµÄnotify()»òÕßnotifyAll()·½·¨£¬»ò³¬¹ýÖ¸¶¨Ê±¼äÁ¿Ç°£¬µ±Ç°Ïß³ÌTµÈ´ý(Ïß³ÌT±ØÐëÓµÓиöÔÏóµÄËø)¡£Ïß³ÌT±»·ÅÖÃÔڸöÔÏóµÄÐÝÏ¢ÇøÖУ¬²¢ÊÍ·ÅËø¡£ÔÚ±»»½ÐÑ¡¢Öжϡ¢³¬Ê±µÄÇé¿öÏ£¬´Ó¶ÔÏóµÄÐÝÏ¢ÇøÖÐɾ³ýÏß³ÌT£¬²¢ÖØÐ½øÐÐÏ̵߳÷¶È¡£Ò»µ©Ïß³ÌT»ñµÃ¸Ã¶ÔÏóµÄËø£¬¸Ã¶ÔÏóÉϵÄËùÓÐͬ²½ÉêÃ÷¶¼±»»Ö¸´µ½µ÷ÓÃwait()·½·¨Ê±µÄ״̬£¬È»ºóÏß³ÌT´Ówait()·½·¨·µ»Ø¡£Èç¹ûµ±Ç°Ïß³ÌÔڵȴý֮ǰ»òÔڵȴýʱ±»ÈκÎÏß³ÌÖжϣ¬Ôò»áÅ׳ö InterruptedException¡£ÔÚ°´ÉÏÊöÐÎʽ»Ö¸´´Ë¶ÔÏóµÄËø¶¨×´Ì¬Ê±²Å»áÅ׳ö´ËÒì³£¡£ÔÚÅ׳ö´ËÒ쳣ʱ£¬µ±Ç°Ï̵߳ÄÖжÏ״̬±»Çå³ý¡£

Ö»ÓиöÔÏóµÄËø±»ÊÍ·Å£¬²¢²»»áÊͷŵ±Ç°Ï̳߳ÖÓÐµÄÆäËûͬ²½×ÊÔ´¡£

1.2. object.notify()

»½ÐÑÔڴ˶ÔÏóËøÉϵȴýµÄµ¥¸öÏ̡߳£´Ë·½·¨Ö»ÄÜÓÉÓµÓиöÔÏóËøµÄÏß³ÌÀ´µ÷Óá£

1.3. Thread.sleep()

ÔÚÖ¸¶¨µÄºÁÃëÊýÄÚÈõ±Ç°ÕýÔÚÖ´ÐеÄÏß³ÌÐÝÃߣ¨ÔÝÍ£Ö´ÐУ©£¬´Ë²Ù×÷Êܵ½ÏµÍ³¼ÆÊ±Æ÷ºÍµ÷¶È³ÌÐò¾«¶ÈºÍ׼ȷÐÔµÄÓ°Ïì¡£¼à¿Ø×´Ì¬ÒÀÈ»±£³Ö¡¢»á×Ô¶¯»Ö¸´µ½¿ÉÔËÐÐ״̬£¬²»»áÊͷŶÔÏóËø¡£Èç¹ûÈκÎÏß³ÌÖжÏÁ˵±Ç°Ï̡߳£µ±Å׳öInterruptedExceptionÒ쳣ʱ£¬µ±Ç°Ï̵߳ÄÖжÏ״̬±»Çå³ý¡£ÈóöCPU·ÖÅäµÄÖ´ÐÐʱ¼ä¡£

thread.join()£ºÔÚÒ»¸öÏ̶߳ÔÏóÉϵ÷Óã¬Ê¹µ±Ç°Ï̵߳ȴýÕâ¸öÏ̶߳ÔÏó¶ÔÓ¦µÄÏ߳̽áÊø¡£

Thread.yield()£ºÔÝÍ£µ±Ç°ÕýÔÚÖ´ÐеÄÏ̶߳ÔÏ󣬲¢Ö´ÐÐÆäËûÏ̡߳£

thread.interrupt()

ÖжÏỊ̈߳¬Í£Ö¹ÆäÕýÔÚ½øÐеÄÒ»ÇС£ÖжÏÒ»¸ö²»´¦Óڻ״̬µÄÏ̲߳»»áÓÐÈκÎ×÷Óá£

Èç¹ûÏß³ÌÔÚµ÷ÓÃObjectÀàµÄwait()·½·¨¡¢»òÕßjoin()¡¢sleep()·½·¨¹ý³ÌÖÐÊÜ×裬ÔòÆäÖжÏ״̬½«±»Çå³ý£¬²¢ÊÕµ½Ò»¸öInterruptedException¡£

Thread.interrupted()£º¼ì²âµ±Ç°Ïß³ÌÊÇ·ñÒѾ­Öжϣ¬²¢ÇÒÇå³ýÏ̵߳ÄÖжÏ״̬(»Øµ½·ÇÖжÏ״̬)¡£

thread.isAlive()£ºÈç¹ûÏß³ÌÒѾ­Æô¶¯ÇÒÉÐδÖÕÖ¹£¬ÔòΪ»î¶¯×´Ì¬¡£

thread.setDaemon()£ºÐèÒªÔÚstart()·½·¨µ÷ÓÃ֮ǰµ÷Óᣵ±ÕýÔÚÔËÐеÄÏ̶߳¼ÊǺǫ́Ïß³Ìʱ£¬JavaÐéÄâ»ú½«Í˳ö¡£·ñÔòµ±Ö÷Ïß³ÌÍ˳öʱ£¬ÆäËûÏß³ÌÈÔÈ»»á¼ÌÐøÖ´ÐС£

14. ÆäËû

1.µ±µ÷ÓÃObjectµÄwait()¡¢notify()¡¢notifyAll()ʱ£¬Èç¹ûµ±Ç°Ïß³ÌûÓлñµÃ¸Ã¶ÔÏóËø£¬Ôò»áÅ׳öIllegalMonitorStateExceptionÒì³£¡£

2.Èç¹ûÒ»¸ö·½·¨ÉêÃ÷Ϊsynchronized£¬ÔòµÈͬÓÚÔÚÕâ¸ö·½·¨Éϵ÷ÓÃsynchronized(this)¡£

Èç¹ûÒ»¸ö¾²Ì¬·½·¨±»ÉêÃ÷Ϊsynchronized£¬ÔòµÈͬÓÚÔÚÕâ¸ö·½·¨Éϵ÷ÓÃsynchronized(Àà.class)¡£µ±Ò»¸öÏ߳̽øÈëͬ²½¾²Ì¬·½·¨ÖÐʱ£¬ÆäËûÏ̲߳»ÄܽøÈëÕâ¸öÀàµÄÈκξ²Ì¬Í¬²½·½·¨¡£

3.Ï̳߳ÉΪ¶ÔÏóËøµÄÓµÓÐÕߣº

1£©.ͨ¹ýÖ´Ðд˶ÔÏóµÄͬ²½ÊµÀý·½·¨

2£©.ͨ¹ýÖ´ÐÐÔڴ˶ÔÏóÉϽøÐÐͬ²½µÄsynchronizedÓï¾äµÄÕýÎÄ

3£©.¶ÔÓÚClassÀàÐ͵ĶÔÏ󣬿ÉÒÔͨ¹ýÖ´ÐиÃÀàµÄͬ²½¾²Ì¬·½·¨¡£

4.ËÀËø£º

ËÀËø¾ÍÊÇÁ½¸ö»òÁ½¸öÒÔÉϵÄÏ̱߳»ÎÞÏÞµÄ×èÈû£¬Ïß³ÌÖ®¼äÏ໥µÈ´ýËùÐè×ÊÔ´¡£

¿ÉÄÜ·¢ÉúÔÚÒÔÏÂÇé¿ö£º

1£©µ±Á½¸öÏß³ÌÏ໥µ÷ÓÃThread.join()£»

2£©µ±Á½¸öÏß³ÌʹÓÃǶÌ×µÄͬ²½¿é£¬Ò»¸öÏß³ÌÕ¼ÓÃÁËÁíÍâÒ»¸öÏ̱߳ØÐëµÄËø£¬»¥ÏàµÈ´ýʱ±»×èÈû¾ÍÓпÉÄܳöÏÖËÀËø¡£

5.µ÷ÓÃÁËThreadÀàµÄstart()·½·¨(ÏòCPUÉêÇëÁíÒ»¸öÏ߳̿ռäÀ´Ö´ÐÐrun()·½·¨ÀïµÄ´úÂë)£¬Ï̵߳Ärun()·½·¨²»Ò»¶¨Á¢¼´Ö´ÐУ¬¶øÊÇÒªµÈ´ýJVM½øÐе÷¶È¡£

run()·½·¨Öаüº¬µÄÊÇÏ̵߳ÄÖ÷Ì壬Ҳ¾ÍÊÇÕâ¸öÏ̱߳»Æô¶¯ºó½«ÒªÔËÐеĴúÂë¡£

   
3620 ´Îä¯ÀÀ       32
Ïà¹ØÎÄÕÂ

Java΢·þÎñÐÂÉú´úÖ®Nacos
ÉîÈëÀí½âJavaÖеÄÈÝÆ÷
JavaÈÝÆ÷Ïê½â
Java´úÂëÖÊÁ¿¼ì²é¹¤¾ß¼°Ê¹Óð¸Àý
Ïà¹ØÎĵµ

JavaÐÔÄÜÓÅ»¯
Spring¿ò¼Ü
SSM¿ò¼Ü¼òµ¥¼òÉÜ
´ÓÁ㿪ʼѧjava±à³Ì¾­µä
Ïà¹Ø¿Î³Ì

¸ßÐÔÄÜJava±à³ÌÓëϵͳÐÔÄÜÓÅ»¯
JavaEE¼Ü¹¹¡¢ Éè¼ÆÄ£Ê½¼°ÐÔÄܵ÷ÓÅ
Java±à³Ì»ù´¡µ½Ó¦Óÿª·¢
JAVAÐéÄâ»úÔ­ÀíÆÊÎö
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

Java ÖеÄÖÐÎıàÂëÎÊÌâ
Java»ù´¡ÖªÊ¶µÄÈýÊ®¸ö¾­µäÎÊ´ð
Íæ×ª Java Web Ó¦Óÿª·¢
ʹÓÃSpring¸üºÃµØ´¦ÀíStruts
ÓÃEclipse¿ª·¢iPhone WebÓ¦ÓÃ
²å¼þϵͳ¿ò¼Ü·ÖÎö

Struts+Spring+Hibernate
»ùÓÚJ2EEµÄWeb 2.0Ó¦Óÿª·¢
J2EEÉè¼ÆÄ£Ê½ºÍÐÔÄܵ÷ÓÅ
Java EE 5ÆóÒµ¼¶¼Ü¹¹Éè¼Æ
Javaµ¥Ôª²âÊÔ·½·¨Óë¼¼Êõ
Java±à³Ì·½·¨Óë¼¼Êõ

Struts+Spring+Hibernate/EJB+ÐÔÄÜÓÅ»¯
»ªÏÄ»ù½ð ActiveMQ Ô­ÀíÓë¹ÜÀí
ijÃñº½¹«Ë¾ Java»ù´¡±à³Ìµ½Ó¦Óÿª·¢
ij·çµç¹«Ë¾ Java Ó¦Óÿª·¢Æ½Ì¨ÓëÇ¨ÒÆ
ÈÕÕÕ¸Û J2EEÓ¦Óÿª·¢¼¼Êõ¿ò¼ÜÓëʵ¼ù
ij¿ç¹ú¹«Ë¾ ¹¤×÷Á÷¹ÜÀíJBPM
¶«·½º½¿Õ¹«Ë¾ ¸ß¼¶J2EE¼°ÆäÇ°ÑØ¼¼Êõ