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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
JavaÄÚ´æÄ£ÐÍÉî¶È½â¶Á
 
À´Ô´£º²©¿Í ·¢²¼ÓÚ 2017-2-13
  1819  次浏览      27
 

JavaÄÚ´æÄ£Ð͹淶ÁËJavaÐéÄâ»úÓë¼ÆËã»úÄÚ´æÊÇÈçºÎЭͬ¹¤×÷µÄ¡£JavaÐéÄâ»úÊÇÒ»¸öÍêÕûµÄ¼ÆËã»úµÄÒ»¸öÄ£ÐÍ£¬Òò´ËÕâ¸öÄ£ÐÍ×ÔȻҲ°üº¬Ò»¸öÄÚ´æÄ£ÐÍ¡ª¡ªÓÖ³ÆÎªJavaÄÚ´æÄ£ÐÍ¡£

Èç¹ûÄãÏëÉè¼Æ±íÏÖÁ¼ºÃµÄ²¢·¢³ÌÐò£¬Àí½âJavaÄÚ´æÄ£ÐÍÊǷdz£ÖØÒªµÄ¡£JavaÄÚ´æÄ£Ð͹涨ÁËÈçºÎºÍºÎʱ¿ÉÒÔ¿´µ½ÓÉÆäËûÏß³ÌÐ޸ĹýºóµÄ¹²Ïí±äÁ¿µÄÖµ£¬ÒÔ¼°ÔÚ±ØÐëʱÈçºÎͬ²½µÄ·ÃÎʹ²Ïí±äÁ¿¡£

ԭʼµÄJavaÄÚ´æÄ£ÐÍ´æÔÚһЩ²»×㣬Òò´ËJavaÄÚ´æÄ£ÐÍÔÚJava1.5ʱ±»ÖØÐÂÐÞ¶©¡£Õâ¸ö°æ±¾µÄJavaÄÚ´æÄ£ÐÍÔÚJava8ÖÐÈËÔÚʹÓá£

JavaÄÚ´æÄ£ÐÍÄÚ²¿Ô­Àí

JavaÄÚ´æÄ£ÐͰÑJavaÐéÄâ»úÄÚ²¿»®·ÖΪÏß³ÌÕ»ºÍ¶Ñ¡£ÕâÕÅͼÑÝʾÁËJavaÄÚ´æÄ£Ð͵ÄÂß¼­ÊÓͼ¡£

ÿһ¸öÔËÐÐÔÚJavaÐéÄâ»úÀïµÄÏ̶߳¼ÓµÓÐ×Ô¼ºµÄÏß³ÌÕ»¡£Õâ¸öÏß³ÌÕ»°üº¬ÁËÕâ¸öÏ̵߳÷Óõķ½·¨µ±Ç°Ö´ÐеãÏà¹ØµÄÐÅÏ¢¡£Ò»¸öÏ߳̽öÄÜ·ÃÎÊ×Ô¼ºµÄÏß³ÌÕ»¡£Ò»¸öÏ̴߳´½¨µÄ±¾µØ±äÁ¿¶ÔÆäËüÏ̲߳»¿É¼û£¬½ö×Ô¼º¿É¼û¡£¼´Ê¹Á½¸öÏß³ÌÖ´ÐÐͬÑùµÄ´úÂ룬ÕâÁ½¸öÏß³ÌÈÎÈ»ÔÚÔÚ×Ô¼ºµÄÏß³ÌÕ»ÖеĴúÂëÀ´´´½¨±¾µØ±äÁ¿¡£Òò´Ë£¬Ã¿¸öÏß³ÌÓµÓÐÿ¸ö±¾µØ±äÁ¿µÄ¶ÀÓа汾¡£

ËùÓÐԭʼÀàÐ͵ı¾µØ±äÁ¿¶¼´æ·ÅÔÚÏß³ÌÕ»ÉÏ£¬Òò´Ë¶ÔÆäËüÏ̲߳»¿É¼û¡£Ò»¸öÏ߳̿ÉÄÜÏòÁíÒ»¸öÏ̴߳«µÝÒ»¸öԭʼÀàÐͱäÁ¿µÄ¿½±´£¬µ«ÊÇËü²»Äܹ²ÏíÕâ¸öԭʼÀàÐͱäÁ¿×ÔÉí¡£

¶ÑÉϰüº¬ÔÚJava³ÌÐòÖд´½¨µÄËùÓжÔÏó£¬ÎÞÂÛÊÇÄÄÒ»¸ö¶ÔÏó´´½¨µÄ¡£Õâ°üÀ¨Ô­Ê¼ÀàÐ͵ĶÔÏó°æ±¾¡£Èç¹ûÒ»¸ö¶ÔÏó±»´´½¨È»ºó¸³Öµ¸øÒ»¸ö¾Ö²¿±äÁ¿£¬»òÕßÓÃÀ´×÷ΪÁíÒ»¸ö¶ÔÏóµÄ³ÉÔ±±äÁ¿£¬Õâ¸ö¶ÔÏóÈÎÈ»ÊÇ´æ·ÅÔÚ¶ÑÉÏ¡£

ÏÂÃæÕâÕÅͼÑÝʾÁ˵÷ÓÃÕ»ºÍ±¾µØ±äÁ¿´æ·ÅÔÚÏß³ÌÕ»ÉÏ£¬¶ÔÏó´æ·ÅÔÚ¶ÑÉÏ¡£

Ò»¸ö±¾µØ±äÁ¿¿ÉÄÜÊÇԭʼÀàÐÍ£¬ÔÚÕâÖÖÇé¿öÏ£¬Ëü×ÜÊÇ¡°´ôÔÚ¡±Ïß³ÌÕ»ÉÏ¡£

Ò»¸ö±¾µØ±äÁ¿Ò²¿ÉÄÜÊÇÖ¸ÏòÒ»¸ö¶ÔÏóµÄÒ»¸öÒýÓá£ÔÚÕâÖÖÇé¿öÏ£¬ÒýÓã¨Õâ¸ö±¾µØ±äÁ¿£©´æ·ÅÔÚÏß³ÌÕ»ÉÏ£¬µ«ÊǶÔÏó±¾Éí´æ·ÅÔÚ¶ÑÉÏ¡£

Ò»¸ö¶ÔÏó¿ÉÄܰüº¬·½·¨£¬ÕâЩ·½·¨¿ÉÄܰüº¬±¾µØ±äÁ¿¡£ÕâЩ±¾µØ±äÁ¿ÈÎÈ»´æ·ÅÔÚÏß³ÌÕ»ÉÏ£¬¼´Ê¹ÕâЩ·½·¨ËùÊôµÄ¶ÔÏó´æ·ÅÔÚ¶ÑÉÏ¡£

Ò»¸ö¶ÔÏóµÄ³ÉÔ±±äÁ¿¿ÉÄÜËæ×ÅÕâ¸ö¶ÔÏó×ÔÉí´æ·ÅÔÚ¶ÑÉÏ¡£²»¹ÜÕâ¸ö³ÉÔ±±äÁ¿ÊÇԭʼÀàÐÍ»¹ÊÇÒýÓÃÀàÐÍ¡£

¾²Ì¬³ÉÔ±±äÁ¿¸úËæ×ÅÀඨÒåÒ»ÆðÒ²´æ·ÅÔÚ¶ÑÉÏ¡£

´æ·ÅÔÚ¶ÑÉϵĶÔÏó¿ÉÒÔ±»ËùÓгÖÓжÔÕâ¸ö¶ÔÏóÒýÓõÄÏ̷߳ÃÎÊ¡£µ±Ò»¸öÏ߳̿ÉÒÔ·ÃÎÊÒ»¸ö¶ÔÏóʱ£¬ËüÒ²¿ÉÒÔ·ÃÎÊÕâ¸ö¶ÔÏóµÄ³ÉÔ±±äÁ¿¡£Èç¹ûÁ½¸öÏß³Ìͬʱµ÷ÓÃͬһ¸ö¶ÔÏóÉϵÄͬһ¸ö·½·¨£¬ËüÃǽ«»á¶¼·ÃÎÊÕâ¸ö¶ÔÏóµÄ³ÉÔ±±äÁ¿£¬µ«ÊÇÿһ¸öÏ̶߳¼ÓµÓÐÕâ¸ö±¾µØ±äÁ¿µÄ˽Óп½±´¡£

ÏÂͼÑÝʾÁËÉÏÃæÌáµ½µÄµã£º

Á½¸öÏß³ÌÓµÓÐһЩÁеı¾µØ±äÁ¿¡£ÆäÖÐÒ»¸ö±¾µØ±äÁ¿£¨Local Variable 2£©Ö´ÐжÑÉϵÄÒ»¸ö¹²Ïí¶ÔÏó£¨Object 3£©¡£ÕâÁ½¸öÏ̷ֱ߳ðÓµÓÐͬһ¸ö¶ÔÏóµÄ²»Í¬ÒýÓá£ÕâЩÒýÓö¼ÊDZ¾µØ±äÁ¿£¬Òò´Ë´æ·ÅÔÚ¸÷×ÔÏ̵߳ÄÏß³ÌÕ»ÉÏ¡£ÕâÁ½¸ö²»Í¬µÄÒýÓÃÖ¸Ïò¶ÑÉÏͬһ¸ö¶ÔÏó¡£

×¢Ò⣬Õâ¸ö¹²Ïí¶ÔÏó£¨Object 3£©³ÖÓÐObject2ºÍObject4Ò»¸öÒýÓÃ×÷ΪÆä³ÉÔ±±äÁ¿£¨ÈçͼÖÐObject3Ö¸ÏòObject2ºÍObject4µÄ¼ýÍ·£©¡£Í¨¹ýÔÚObject3ÖÐÕâЩ³ÉÔ±±äÁ¿ÒýÓã¬ÕâÁ½¸öÏ߳̾ͿÉÒÔ·ÃÎÊObject2ºÍObject4¡£

ÕâÕÅͼҲչʾÁËÖ¸Ïò¶ÑÉÏÁ½¸ö²»Í¬¶ÔÏóµÄÒ»¸ö±¾µØ±äÁ¿¡£ÔÚÕâÖÖÇé¿öÏ£¬Ö¸ÏòÁ½¸ö²»Í¬¶ÔÏóµÄÒýÓò»ÊÇͬһ¸ö¶ÔÏó¡£ÀíÂÛÉÏ£¬Á½¸öÏ̶߳¼¿ÉÒÔ·ÃÎÊObject1ºÍObject5£¬Èç¹ûÁ½¸öÏ̶߳¼ÓµÓÐÁ½¸ö¶ÔÏóµÄÒýÓᣵ«ÊÇÔÚÉÏͼÖУ¬Ã¿Ò»¸öÏ߳̽öÓÐÒ»¸öÒýÓÃÖ¸ÏòÁ½¸ö¶ÔÏóÆäÖÐÖ®Ò»¡£

Òò´Ë£¬Ê²Ã´ÀàÐ͵ÄJava´úÂë»áµ¼ÖÂÉÏÃæµÄÄÚ´æÍ¼ÄØ£¿ÈçÏÂËùʾ£º

public class MyRunnable implements Runnable() {

public void run() {
methodOne();
}

public void methodOne() {
int localVariable1 = 45;

MySharedObject localVariable2 =
MySharedObject.sharedInstance;

//... do more with local variables.

methodTwo();
}

public void methodTwo() {
Integer localVariable1 = new Integer(99);

//... do more with local variable.
}
}

public class MySharedObject {

//static variable pointing to instance of MySharedObject

public static final MySharedObject sharedInstance =
new MySharedObject();

//member variables pointing to two objects on the heap

public Integer object2 = new Integer(22);
public Integer object4 = new Integer(44);

public long member1 = 12345;
public long member1 = 67890;
}

Èç¹ûÁ½¸öÏß³ÌͬʱִÐÐrun()·½·¨£¬¾Í»á³öÏÖÉÏͼËùʾµÄÇé¾°¡£run()·½·¨µ÷ÓÃmethodOne()·½·¨£¬methodOne()µ÷ÓÃmethodTwo()·½·¨¡£

methodOne()ÉùÃ÷ÁËÒ»¸öԭʼÀàÐ͵ı¾µØ±äÁ¿ºÍÒ»¸öÒýÓÃÀàÐ͵ı¾µØ±äÁ¿¡£

ÿ¸öÏß³ÌÖ´ÐÐmethodOne()¶¼»áÔÚËüÃǶÔÓ¦µÄÏß³ÌÕ»ÉÏ´´½¨localVariable1ºÍlocalVariable2µÄ˽Óп½±´¡£localVariable1±äÁ¿±Ë´ËÍêÈ«¶ÀÁ¢£¬½ö¡°Éú»î¡±ÔÚÿ¸öÏ̵߳ÄÏß³ÌÕ»ÉÏ¡£Ò»¸öÏ߳̿´²»µ½ÁíÒ»¸öÏ̶߳ÔËüµÄlocalVariable1˽Óп½±´×ö³öµÄÐ޸ġ£

ÿ¸öÏß³ÌÖ´ÐÐmethodOne()ʱҲ½«»á´´½¨ËüÃǸ÷×ÔµÄlocalVariable2¿½±´¡£È»¶ø£¬Á½¸ölocalVariable2µÄ²»Í¬¿½±´¶¼Ö¸Ïò¶ÑÉϵÄͬһ¸ö¶ÔÏó¡£´úÂëÖÐͨ¹ýÒ»¸ö¾²Ì¬±äÁ¿ÉèÖÃlocalVariable2Ö¸ÏòÒ»¸ö¶ÔÏóÒýÓ᣽ö´æÔÚÒ»¸ö¾²Ì¬±äÁ¿µÄÒ»·Ý¿½±´£¬Õâ·Ý¿½±´´æ·ÅÔÚ¶ÑÉÏ¡£Òò´Ë£¬localVariable2µÄÁ½·Ý¿½±´¶¼Ö¸ÏòÓÉMySharedObjectÖ¸ÏòµÄ¾²Ì¬±äÁ¿µÄͬһ¸öʵÀý¡£MySharedObjectʵÀýÒ²´æ·ÅÔÚ¶ÑÉÏ¡£Ëü¶ÔÓ¦ÓÚÉÏͼÖеÄObject3¡£

×¢Ò⣬MySharedObjectÀàÒ²°üº¬Á½¸ö³ÉÔ±±äÁ¿¡£ÕâЩ³ÉÔ±±äÁ¿Ëæ×ÅÕâ¸ö¶ÔÏó´æ·ÅÔÚ¶ÑÉÏ¡£ÕâÁ½¸ö³ÉÔ±±äÁ¿Ö¸ÏòÁíÍâÁ½¸öInteger¶ÔÏó¡£ÕâЩInteger¶ÔÏó¶ÔÓ¦ÓÚÉÏͼÖеÄObject2ºÍObject4.

×¢Ò⣬methodTwo()´´½¨Ò»¸öÃûΪlocalVariableµÄ±¾µØ±äÁ¿¡£Õâ¸ö³ÉÔ±±äÁ¿ÊÇÒ»¸öÖ¸ÏòÒ»¸öInteger¶ÔÏóµÄ¶ÔÏóÒýÓá£Õâ¸ö·½·¨ÉèÖÃlocalVariable1ÒýÓÃÖ¸ÏòÒ»¸öеÄIntegerʵÀý¡£ÔÚÖ´ÐÐmethodTwo·½·¨Ê±£¬localVariable1ÒýÓý«»áÔÚÿ¸öÏß³ÌÖдæ·ÅÒ»·Ý¿½±´¡£ÕâÁ½¸öInteger¶ÔÏóʵÀý»¯½«»á±»´æ´¢¶ÑÉÏ£¬µ«ÊÇÿ´ÎÖ´ÐÐÕâ¸ö·½·¨Ê±£¬Õâ¸ö·½·¨¶¼»á´´½¨Ò»¸öеÄInteger¶ÔÏó£¬Á½¸öÏß³ÌÖ´ÐÐÕâ¸ö·½·¨½«»á´´½¨Á½¸ö²»Í¬µÄIntegerʵÀý¡£methodTwo·½·¨´´½¨µÄInteger¶ÔÏó¶ÔÓ¦ÓÚÉÏͼÖеÄObject1ºÍObject5¡£

»¹ÓÐÒ»µã£¬MySharedObjectÀàÖеÄÁ½¸ölongÀàÐ͵ijÉÔ±±äÁ¿ÊÇԭʼÀàÐ͵ġ£ÒòΪ£¬ÕâЩ±äÁ¿ÊdzÉÔ±±äÁ¿£¬ËùÒÔËüÃÇÈÎÈ»Ëæ×ŸöÔÏó´æ·ÅÔÚ¶ÑÉÏ£¬½öÓб¾µØ±äÁ¿´æ·ÅÔÚÏß³ÌÕ»ÉÏ¡£

Ó²¼þÄÚ´æ¼Ü¹¹

ÏÖ´úÓ²¼þÄÚ´æÄ£ÐÍÓëJavaÄÚ´æÄ£ÐÍÓÐһЩ²»Í¬¡£Àí½âÄÚ´æÄ£Ðͼܹ¹ÒÔ¼°JavaÄÚ´æÄ£ÐÍÈçºÎÓëËüЭͬ¹¤×÷Ò²ÊǷdz£ÖØÒªµÄ¡£Õⲿ·ÖÃèÊöÁËͨÓõÄÓ²¼þÄÚ´æ¼Ü¹¹£¬ÏÂÃæµÄ²¿·Ö½«»áÃèÊöJavaÄÚ´æÊÇÈçºÎÓëËü¡°ÁªÊÖ¡±¹¤×÷µÄ¡£

ÏÂÃæÊÇÏÖ´ú¼ÆËã»úÓ²¼þ¼Ü¹¹µÄ¼òµ¥Í¼Ê¾£º

Ò»¸öÏÖ´ú¼ÆËã»úͨ³£ÓÉÁ½¸ö»òÕß¶à¸öCPU¡£ÆäÖÐһЩCPU»¹ÓжàºË¡£´ÓÕâÒ»µã¿ÉÒÔ¿´³ö£¬ÔÚÒ»¸öÓÐÁ½¸ö»òÕß¶à¸öCPUµÄÏÖ´ú¼ÆËã»úÉÏͬʱÔËÐжà¸öÏß³ÌÊÇ¿ÉÄܵġ£Ã¿¸öCPUÔÚijһʱ¿ÌÔËÐÐÒ»¸öÏß³ÌÊÇûÓÐÎÊÌâµÄ¡£ÕâÒâζ×Å£¬Èç¹ûÄãµÄJava³ÌÐòÊǶàÏ̵߳ģ¬ÔÚÄãµÄJava³ÌÐòÖÐÿ¸öCPUÉÏÒ»¸öÏ߳̿ÉÄÜͬʱ£¨²¢·¢£©Ö´ÐС£

ÿ¸öCPU¶¼°üº¬Ò»ÏµÁеļĴæÆ÷£¬ËüÃÇÊÇCPUÄÚÄÚ´æµÄ»ù´¡¡£CPUÔڼĴæÆ÷ÉÏÖ´ÐвÙ×÷µÄËÙ¶ÈÔ¶´óÓÚÔÚÖ÷´æÉÏÖ´ÐеÄËÙ¶È¡£ÕâÊÇÒòΪCPU·ÃÎʼĴæÆ÷µÄËÙ¶ÈÔ¶´óÓÚÖ÷´æ¡£

ÿ¸öCPU¿ÉÄÜ»¹ÓÐÒ»¸öCPU»º´æ²ã¡£Êµ¼ÊÉÏ£¬¾ø´ó¶àÊýµÄÏÖ´úCPU¶¼ÓÐÒ»¶¨´óСµÄ»º´æ²ã¡£CPU·ÃÎÊ»º´æ²ãµÄËÙ¶È¿ìÓÚ·ÃÎÊÖ÷´æµÄËÙ¶È£¬µ«Í¨³£±È·ÃÎÊÄÚ²¿¼Ä´æÆ÷µÄËÙ¶È»¹ÒªÂýÒ»µã¡£Ò»Ð©CPU»¹Óжà²ã»º´æ£¬µ«ÕâЩ¶ÔÀí½âJavaÄÚ´æÄ£ÐÍÈçºÎºÍÄÚ´æ½»»¥²»ÊÇÄÇÃ´ÖØÒª¡£Ö»ÒªÖªµÀCPUÖпÉÒÔÓÐÒ»¸ö»º´æ²ã¾Í¿ÉÒÔÁË¡£

Ò»¸ö¼ÆËã»ú»¹°üº¬Ò»¸öÖ÷´æ¡£ËùÓеÄCPU¶¼¿ÉÒÔ·ÃÎÊÖ÷´æ¡£Ö÷´æÍ¨³£±ÈCPUÖеĻº´æ´óµÃ¶à¡£

ͨ³£Çé¿öÏ£¬µ±Ò»¸öCPUÐèÒª¶ÁÈ¡Ö÷´æÊ±£¬Ëü»á½«Ö÷´æµÄ²¿·Ö¶Áµ½CPU»º´æÖС£ËüÉõÖÁ¿ÉÄܽ«»º´æÖеIJ¿·ÖÄÚÈݶÁµ½ËüµÄÄÚ²¿¼Ä´æÆ÷ÖУ¬È»ºóÔڼĴæÆ÷ÖÐÖ´ÐвÙ×÷¡£µ±CPUÐèÒª½«½á¹ûд»Øµ½Ö÷´æÖÐȥʱ£¬Ëü»á½«ÄÚ²¿¼Ä´æÆ÷µÄֵˢе½»º´æÖУ¬È»ºóÔÚij¸öʱ¼äµã½«ÖµË¢Ð»ØÖ÷´æ¡£

µ±CPUÐèÒªÔÚ»º´æ²ã´æ·ÅһЩ¶«Î÷µÄʱºò£¬´æ·ÅÔÚ»º´æÖеÄÄÚÈÝͨ³£»á±»Ë¢Ð»ØÖ÷´æ¡£CPU»º´æ¿ÉÒÔÔÚijһʱ¿Ì½«Êý¾Ý¾Ö²¿Ð´µ½ËüµÄÄÚ´æÖУ¬ºÍÔÚijһʱ¿Ì¾Ö²¿Ë¢ÐÂËüµÄÄÚ´æ¡£Ëü²»»áÔÙijһʱ¿Ì¶Á/дÕû¸ö»º´æ¡£Í¨³££¬ÔÚÒ»¸ö±»³Æ×÷¡°cache lines¡±µÄ¸üСµÄÄÚ´æ¿éÖлº´æ±»¸üС£Ò»¸ö»òÕß¶à¸ö»º´æÐпÉÄܱ»¶Áµ½»º´æ£¬Ò»¸ö»òÕß¶à¸ö»º´æÐпÉÄÜÔÙ±»Ë¢Ð»ØÖ÷´æ¡£

JavaÄÚ´æÄ£ÐͺÍÓ²¼þÄÚ´æ¼Ü¹¹Ö®¼äµÄÇŽÓ

ÉÏÃæÒѾ­Ìáµ½£¬JavaÄÚ´æÄ£ÐÍÓëÓ²¼þÄÚ´æ¼Ü¹¹Ö®¼ä´æÔÚ²îÒì¡£Ó²¼þÄÚ´æ¼Ü¹¹Ã»ÓÐÇø·ÖÏß³ÌÕ»ºÍ¶Ñ¡£¶ÔÓÚÓ²¼þ£¬ËùÓеÄÏß³ÌÕ»ºÍ¶Ñ¶¼·Ö²¼ÔÚÖ÷ÄÚÖС£²¿·ÖÏß³ÌÕ»ºÍ¶Ñ¿ÉÄÜÓÐʱºò»á³öÏÖÔÚCPU»º´æÖкÍCPUÄÚ²¿µÄ¼Ä´æÆ÷ÖС£ÈçÏÂͼËùʾ£º

µ±¶ÔÏóºÍ±äÁ¿±»´æ·ÅÔÚ¼ÆËã»úÖи÷ÖÖ²»Í¬µÄÄÚ´æÇøÓòÖÐʱ£¬¾Í¿ÉÄÜ»á³öÏÖһЩ¾ßÌåµÄÎÊÌâ¡£Ö÷Òª°üÀ¨ÈçÏÂÁ½¸ö·½Ã棺

Ï̶߳Թ²Ïí±äÁ¿Ð޸ĵĿɼûÐÔ

µ±¶Á£¬Ð´ºÍ¼ì²é¹²Ïí±äÁ¿Ê±³öÏÖrace conditions

ÏÂÃæÎÒÃÇרÃÅÀ´½âÊÍÒÔÏÂÕâÁ½¸öÎÊÌâ¡£

¹²Ïí¶ÔÏó¿É¼ûÐÔ

Èç¹ûÁ½¸ö»òÕ߸ü¶àµÄÏß³ÌÔÚûÓÐÕýÈ·µÄʹÓÃVolatileÉùÃ÷»òÕßͬ²½µÄÇé¿öϹ²ÏíÒ»¸ö¶ÔÏó£¬Ò»¸öÏ̸߳üÐÂÕâ¸ö¹²Ïí¶ÔÏó¿ÉÄÜ¶ÔÆäËüÏß³ÌÀ´ËµÊDz»½Ó¼ûµÄ¡£

ÏëÏóһϣ¬¹²Ïí¶ÔÏó±»³õʼ»¯ÔÚÖ÷´æÖС£ÅÜÔÚCPUÉϵÄÒ»¸öÏ߳̽«Õâ¸ö¹²Ïí¶ÔÏó¶Áµ½CPU»º´æÖС£È»ºóÐÞ¸ÄÁËÕâ¸ö¶ÔÏó¡£Ö»ÒªCPU»º´æÃ»Óб»Ë¢Ð»áÖ÷´æ£¬¶ÔÏóÐ޸ĺóµÄ°æ±¾¶ÔÅÜÔÚÆäËüCPUÉϵÄÏ̶߳¼ÊDz»¿É¼ûµÄ¡£ÕâÖÖ·½Ê½¿ÉÄܵ¼ÖÂÿ¸öÏß³ÌÓµÓÐÕâ¸ö¹²Ïí¶ÔÏóµÄ˽Óп½±´£¬Ã¿¸ö¿½±´Í£ÁôÔÚ²»Í¬µÄCPU»º´æÖС£

ÏÂͼʾÒâÁËÕâÖÖÇéÐΡ£ÅÜÔÚ×ó±ßCPUµÄÏ߳̿½±´Õâ¸ö¹²Ïí¶ÔÏóµ½ËüµÄCPU»º´æÖУ¬È»ºó½«count±äÁ¿µÄÖµÐÞ¸ÄΪ2¡£Õâ¸öÐ޸ĶÔÅÜÔÚÓÒ±ßCPUÉÏµÄÆäËüÏß³ÌÊDz»¿É¼ûµÄ£¬ÒòΪÐ޸ĺóµÄcountµÄÖµ»¹Ã»Óб»Ë¢Ð»ØÖ÷´æÖÐÈ¥¡£

½â¾öÕâ¸öÎÊÌâÄã¿ÉÒÔʹÓÃJavaÖеÄvolatile¹Ø¼ü×Ö¡£volatile¹Ø¼ü×Ö¿ÉÒÔ±£Ö¤Ö±½Ó´ÓÖ÷´æÖжÁȡһ¸ö±äÁ¿£¬Èç¹ûÕâ¸ö±äÁ¿±»Ð޸ĺó£¬×ÜÊǻᱻд»Øµ½Ö÷´æÖÐÈ¥¡£

Race Conditions

Èç¹ûÁ½¸ö»òÕ߸ü¶àµÄÏ̹߳²ÏíÒ»¸ö¶ÔÏ󣬶à¸öÏß³ÌÔÚÕâ¸ö¹²Ïí¶ÔÏóÉϸüбäÁ¿£¬¾ÍÓпÉÄÜ·¢Éúrace conditions¡£

ÏëÏóһϣ¬Èç¹ûÏß³ÌA¶ÁÒ»¸ö¹²Ïí¶ÔÏóµÄ±äÁ¿countµ½ËüµÄCPU»º´æÖС£ÔÙÏëÏóһϣ¬Ïß³ÌBÒ²×öÁËͬÑùµÄÊÂÇ飬µ«ÊÇÍùÒ»¸ö²»Í¬µÄCPU»º´æÖС£ÏÖÔÚÏß³ÌA½«count¼Ó1£¬Ïß³ÌBÒ²×öÁËͬÑùµÄÊÂÇé¡£ÏÖÔÚcountÒѾ­±»ÔöÔÚÁËÁ½¸ö£¬Ã¿¸öCPU»º´æÖÐÒ»´Î¡£

Èç¹ûÕâЩÔö¼Ó²Ù×÷±»Ë³ÐòµÄÖ´ÐУ¬±äÁ¿countÓ¦¸Ã±»Ôö¼ÓÁ½´Î£¬È»ºóÔ­Öµ+2±»Ð´»Øµ½Ö÷´æÖÐÈ¥¡£

È»¶ø£¬Á½´ÎÔö¼Ó¶¼ÊÇÔÚûÓÐÊʵ±µÄͬ²½Ï²¢·¢Ö´Ðеġ£ÎÞÂÛÊÇÏß³ÌA»¹ÊÇÏß³ÌB½«countÐ޸ĺóµÄ°æ±¾Ð´»Øµ½Ö÷´æÖÐÈ¡£¬Ð޸ĺóµÄÖµ½ö»á±»Ô­Öµ´ó1£¬¾¡¹ÜÔö¼ÓÁËÁ½´Î¡£

ÏÂͼÑÝʾÁËÉÏÃæÃèÊöµÄÇé¿ö£º

½â¾öÕâ¸öÎÊÌâ¿ÉÒÔʹÓÃJavaͬ²½¿é¡£Ò»¸öͬ²½¿é¿ÉÒÔ±£Ö¤ÔÚͬһʱ¿Ì½öÓÐÒ»¸öÏ߳̿ÉÒÔ½øÈë´úÂëµÄÁÙ½çÇø¡£Í¬²½¿é»¹¿ÉÒÔ±£Ö¤´úÂë¿éÖÐËùÓб»·ÃÎʵıäÁ¿½«»á´ÓÖ÷´æÖжÁÈ룬µ±Ïß³ÌÍ˳öͬ²½´úÂë¿éʱ£¬ËùÓб»¸üеıäÁ¿¶¼»á±»Ë¢Ð»ØÖ÷´æÖÐÈ¥£¬²»¹ÜÕâ¸ö±äÁ¿ÊÇ·ñ±»ÉùÃ÷Ϊvolatile¡£

   
1819 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

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

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

¸ßÐÔÄÜJava±à³ÌÓëϵͳÐÔÄÜÓÅ»¯
JavaEE¼Ü¹¹¡¢ Éè¼ÆÄ£Ê½¼°ÐÔÄܵ÷ÓÅ
Java±à³Ì»ù´¡µ½Ó¦Óÿª·¢
JAVAÐéÄâ»úÔ­ÀíÆÊÎö
×îл¼Æ»®
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢ 6-12[ÏÃÃÅ]
È˹¤ÖÇÄÜ.»úÆ÷ѧϰTensorFlow 6-22[Ö±²¥]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 6-30[±±¾©]
ǶÈëʽÈí¼þ¼Ü¹¹-¸ß¼¶Êµ¼ù 7-9[±±¾©]
Óû§ÌåÑé¡¢Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À 7-25[Î÷°²]
ͼÊý¾Ý¿âÓë֪ʶͼÆ× 8-23[±±¾©]

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¼°ÆäÇ°ÑØ¼¼Êõ