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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
java²¢·¢»úÖÆµÄµ×²ãʵÏÖÔ­Àí
 
À´Ô´£ºcsdn  ·¢²¼ÓÚ 2017-2-24
  2130  次浏览      27
 

ÕªÒª£º volativeµÄÓ¦Óà volatileµÄ¶¨ÒåÓëʵÏÖÔ­Àí synchronizedµÄʵÏÖÔ­ÀíºÍÓ¦Óà java¶ÔÏóÍ· ËøÉý¼¶ Æ«ÏòËø Æ«ÏòËøµÄ³·Ïú ¹Ø±ÕÆ«ÏòËø ÇáÁ¿Ëø ÇáÁ¿Ëø¼ÓËø ÇáÁ¿Ëø½âËø ËøµÄÓÅȱµã¶Ô±È Ô­×Ó²Ù×÷µÄʵÏÖÔ­Àí ÊõÓﶨÒå ´¦ÀíÆ÷ʵÏÖÔ­×Ó²Ù×÷ ʹÓÃ×ÜÏßËø±£Ö¤Ô­×ÓÐÔ Ê¹Óûº´æËø±£Ö¤Ô­×ÓÐÔ javaÈçºÎʵÏÖÔ­×Ó²Ù×÷

volativeµÄÓ¦ÓÃ

volatileµÄ¶¨ÒåÓëʵÏÖÔ­Àí

Java±à³ÌÓïÑÔÔÊÐíÏ̷߳ÃÎʹ²Ïí±äÁ¿£¬ÎªÁËÈ·±£¹²Ïí±äÁ¿Äܱ»×¼È·ºÍÒ»ÖµظüУ¬Ïß³ÌÓ¦¸ÃÈ·±£Í¨¹ýÅÅËûËøµ¥¶À»ñµÃÕâ¸ö±äÁ¿¡£JavaÓïÑÔÌṩÁËvolatile£¬ÔÚijЩÇé¿öϱÈËøÒª¸ü¼Ó·½±ã¡£Èç¹ûÒ»¸ö×ֶα»ÉùÃ÷³Évolatile£¬JavaÏß³ÌÄÚ´æÄ£ÐÍÈ·±£ËùÓÐÏ߳̿´µ½Õâ¸ö±äÁ¿µÄÖµÊÇÒ»Öµġ£

ÓÐvolatile±äÁ¿ÐÞÊεĹ²Ïí±äÁ¿½øÐÐд²Ù×÷µÄʱºò»á¶à³öһЩ»ã±à´úÂ룬¼ÓÈëLockǰ׺¡£Lockǰ׺µÄÖ¸ÁîÔÚ¶àºË´¦ÀíÆ÷»áÒý·¢Á½¼þÊÂÇé

1. ½«µ±Ç°´¦ÀíÆ÷»º´æÐеÄÊý¾Ýд»Øµ½ÏµÍ³ÄÚ´æ

2. Õâ¸öд»ØÄÚ´æµÄ²Ù×÷»áʹÔÚÆäËûcpuÀﻺ´æÁ˸ÃÄÚ´æµØÖ·µÄÊý¾ÝÎÞЧ¡£

ÔÚ¶à´¦ÀíÆ÷Ï£¬ÎªÁ˱£Ö¤¸÷¸ö´¦ÀíÆ÷µÄ»º´æÊÇÒ»Öµģ¬»áʵÏÖ»º´æÒ»ÖÂÐÔЭÒ飬ÿ¸ö´¦ÀíÆ÷ͨ¹ýÐá̽ÔÚ×ÜÏßÉÏ´«²¥µÄÊý¾ÝÀ´¼ì²é×Ô¼º»º´æµÄÖµÊDz»ÊǹýÆÚÁË£¬µ±´¦ÀíÆ÷·¢ÏÖ×Ô¼º»º´æÐжÔÓ¦µÄÄÚ´æµØÖ·±»Ð޸ģ¬¾Í»á½«µ±Ç°´¦ÀíÆ÷µÄ»º´æÐÐÉèÖóÉÎÞЧ״̬£¬µ±´¦ÀíÆ÷¶ÔÕâ¸öÊý¾Ý½øÐÐÐ޸IJÙ×÷µÄʱºò£¬»áÖØÐ´ÓϵͳÄÚ´æÖаÑÊý¾Ý¶Áµ½´¦ÀíÆ÷»º´æÀï¡£

volatileµÄÁ½ÌõʵÏÖÔ­Ôò

1. Lockǰ׺ָÁî»áÒýÆð´¦ÀíÆ÷»º´æ»ØÐ´µ½ÄÚ´æ

2. Ò»¸ö´¦ÀíÆ÷µÄ»º´æ»ØÐ´µ½ÄÚ´æ»áµ¼ÖÂÆäËû´¦ÀíÆ÷µÄ»º´æÎÞЧ

synchronizedµÄʵÏÖÔ­ÀíºÍÓ¦ÓÃ

JavaÖеÄÿһ¸ö¶ÔÏ󶼿ÉÒÔ×÷ÎªËø¡£¾ßÌå±íÏÖΪÒÔÏÂ3ÖÖÐÎʽ£º

1. ¶ÔÓÚÆÕͨͬ²½·½·¨£¬ËøÊǵ±Ç°ÊµÀý¶ÔÏó¡£

2. ¶ÔÓÚ¾²Ì¬Í¬²½·½·¨£¬ËøÊǵ±Ç°ÀàµÄClass¶ÔÏó¡£

3. ¶ÔÓÚͬ²½·½·¨¿é£¬ËøÊÇSynchonizedÀ¨ºÅÀïÅäÖõĶÔÏó¡£

JVM»ùÓÚ½øÈëºÍÍ˳öMonitor¶ÔÏóÀ´ÊµÏÖ·½·¨Í¬²½ºÍ´úÂë¿éͬ²½£¬µ«Á½ÕßµÄʵÏÖϸ½Ú²»Ò»Ñù¡£´úÂë¿éͬ²½ÊÇʹÓÃmonitorenterºÍmonitorexitÖ¸ÁîʵÏֵ쬶ø·½·¨Í¬²½ÊÇʹÓÃÁíÍâÒ»ÖÖ·½Ê½ÊµÏֵģ¬Ï¸½ÚÔÚJVM¹æ·¶ÀﲢûÓÐÏêϸ˵Ã÷¡£µ«ÊÇ£¬·½·¨µÄͬ²½Í¬Ñù¿ÉÒÔʹÓÃÕâÁ½¸öÖ¸ÁîÀ´ÊµÏÖ¡£

monitorenterÖ¸ÁîÊÇÔÚ±àÒëºó²åÈ뵽ͬ²½´úÂë¿éµÄ¿ªÊ¼Î»Ö㬶ømonitorexitÊDzåÈëµ½·½·¨½áÊø´¦ºÍÒì³£´¦£¬JVMÒª±£Ö¤Ã¿¸ömonitorenter±ØÐëÓжÔÓ¦µÄmonitorexitÓëÖ®Åä¶Ô¡£ÈκζÔÏó¶¼ÓÐÒ»¸ömonitorÓëÖ®¹ØÁª£¬µ±ÇÒÒ»¸ömonitor±»³ÖÓкó£¬Ëü½«´¦ÓÚËø¶¨×´Ì¬¡£Ïß³ÌÖ´Ðе½monitorenterÖ¸Áîʱ£¬½«»á³¢ÊÔ»ñÈ¡¶ÔÏóËù¶ÔÓ¦µÄmonitorµÄËùÓÐȨ£¬¼´³¢ÊÔ»ñµÃ¶ÔÏóµÄËø¡£

java¶ÔÏóÍ·

synchronizedÓõÄËøÊÇ´æÔÚJava¶ÔÏóÍ·ÀïµÄ¡£Èç¹û¶ÔÏóÊÇÊý×éÀàÐÍ£¬ÔòÐéÄâ»úÓÃ3¸ö×Ö¿í

£¨Word£©´æ´¢¶ÔÏóÍ·£¬Èç¹û¶ÔÏóÊÇ·ÇÊý×éÀàÐÍ£¬ÔòÓÃ2×Ö¿í´æ´¢¶ÔÏóÍ·¡£ÔÚ32λÐéÄâ»úÖУ¬1×Ö¿íµÈÓÚ4×Ö½Ú£¬¼´32bit

Java¶ÔÏóÍ·ÀïµÄMark WordÀïĬÈÏ´æ´¢¶ÔÏóµÄHashCode¡¢·Ö´úÄêÁäºÍËø±ê¼Çλ¡£32λJVM

µÄMark WordµÄĬÈÏ´æ´¢½á¹¹ÈçÏÂͼʾ

ÔÚÔËÐÐÆÚ¼ä£¬Mark WordÀï´æ´¢µÄÊý¾Ý»áËæ×ÅËø±ê־λµÄ±ä»¯¶ø±ä»¯¡£Mark Word¿ÉÄܱä

»¯Îª´æ´¢ÒÔÏÂ4ÖÖÊý¾Ý,ÈçÏÂͼʾ

ÔÚ64λÐéÄâ»úÏ£¬Mark WordÊÇ64bit´óСµÄ,ÈçÏÂͼʾ

ËøÉý¼¶

Java SE 1.6ÖУ¬ËøÒ»¹²ÓÐ4ÖÖ״̬£¬¼¶±ð´ÓµÍµ½¸ßÒÀ´ÎÊÇ£º

1. ÎÞËø×´Ì¬

2. Æ«ÏòËø×´Ì¬

3. ÇáÁ¿¼¶Ëø×´Ì¬

4. ÖØÁ¿¼¶Ëø×´Ì¬

Õ⼸¸ö״̬»áËæ×žºÕùÇé¿öÖð½¥Éý¼¶¡£

Æ«ÏòËø

´ó¶àÊýÇé¿öÏ£¬Ëø²»½ö²»´æÔÚ¶àÏ߳̾ºÕù£¬¶øÇÒ×ÜÊÇÓÉͬ

Ò»Ï̶߳à´Î»ñµÃ£¬ÎªÁËÈÃÏ̻߳ñµÃËøµÄ´ú¼Û¸üµÍ¶øÒýÈëÁËÆ«ÏòËø¡£µ±Ò»¸öÏ̷߳ÃÎÊͬ²½¿é²¢»ñÈ¡ËøÊ±£¬»áÔÚ¶ÔÏóÍ·ºÍÕ»Ö¡ÖеÄËø¼Ç¼Àï´æ´¢ËøÆ«ÏòµÄÏß³ÌID£¬ÒÔºó¸ÃÏß³ÌÔÚ½øÈëºÍÍ˳öͬ²½¿éʱ²»ÐèÒª½øÐÐCAS²Ù×÷À´¼ÓËøºÍ½âËø£¬Ö»Ðè¼òµ¥µØ²âÊÔһ϶ÔÏóÍ·µÄMark WordÀïÊÇ·ñ´æ´¢×ÅÖ¸Ïòµ±Ç°Ïß³ÌµÄÆ«ÏòËø¡£

Æ«ÏòËøµÄ³·Ïú

Æ«ÏòËøÊ¹ÓÃÁËÒ»Öֵȵ½¾ºÕù³öÏÖ²ÅÊÍ·ÅËøµÄ»úÖÆ£¬ËùÒÔµ±ÆäËûÏ̳߳¢ÊÔ¾ºÕùÆ«ÏòËøÊ±£¬³ÖÓÐÆ«ÏòËøµÄÏ̲߳ŻáÊÍ·ÅËø¡£

µ±³öÏÖÆ«ÏòËø¾ºÕùµÄʱºò£¬°´Èçϲ½ÖèÖ´ÐÐ

1. ÔÝÍ£ÓµÓÐÆ«ÏòËøµÄÏß³Ì

2. ¼ì²é³ÖÓÐÆ«ÏòËøµÄÏß³ÌÊÇ·ñ»¹alive£¬Èô²»ÊÇ£¬Ôò½«¶ÔÏóÍ·ÉèÖÃΪÎÞËø×´Ì¬£¬·ñÔòÖ´ÐÐ3

3. Ïß³ÌÈÔÈ»»î×Å£¬Ö´ÐÐÆ«ÏòËøµÄÕ»£¬±éÀúÆ«Ïò¶ÔÏóµÄËø¼Ç¼£¬Õ»ÖеÄËø¼Ç¼ºÍ¶ÔÏóÍ·µÄMark WordÒªÃ´ÖØÐÂÆ«ÏòÓÚÆäËûỊ̈߳¬ÒªÃ´»Ø¸´µ½ÎÞËø»òÕß±ê¼Ç¶ÔÏó²»ÊʺÏ×÷ΪƫÏòËø

4. »½ÐÑÔÝÍ£µÄÏß³Ì

¹Ø±ÕÆ«ÏòËø

Æ«ÏòËøÔÚJava 6ºÍJava 7ÀïÊÇĬÈÏÆôÓõ쬵«ÊÇËüÔÚÓ¦ÓóÌÐòÆô¶¯¼¸ÃëÖÓÖ®ºó²Å¼¤»î£¬Èç

ÓбØÒª¿ÉÒÔʹÓÃJVM²ÎÊýÀ´¹Ø±ÕÑÓ³Ù£º

-XX:BiasedLockingStartupDelay=0

Èç¹ûÄãÈ·¶¨Ó¦ÓóÌÐòÀïËùÓеÄËøÍ¨³£Çé¿öÏ´¦ÓÚ¾ºÕù״̬£¬¿ÉÒÔͨ¹ýJVM²ÎÊý¹Ø±ÕÆ«ÏòËø£º

-XX:-UseBiasedLocking=false

ÄÇô³ÌÐòĬÈÏ»á½øÈëÇáÁ¿¼¶Ëø×´Ì¬¡£

ÇáÁ¿Ëø

ÇáÁ¿Ëø¼ÓËø

Ïß³ÌÔÚÖ´ÐÐͬ²½¿é֮ǰ£¬JVM»áÏÈÔÚµ±Ç°Ï̵߳ÄÕ»èåÖд´½¨ÓÃÓÚ´æ´¢Ëø¼Ç¼µÄ¿Õ¼ä£¬²¢½«¶ÔÏóÍ·ÖеÄMark Word¸´ÖƵ½Ëø¼Ç¼ÖУ¬¹Ù·½³ÆÎªDisplaced Mark Word¡£È»ºóÏ̳߳¢ÊÔʹÓÃCAS½«¶ÔÏóÍ·ÖеÄMark WordÌæ»»ÎªÖ¸ÏòËø¼Ç¼µÄÖ¸Õë¡£Èç¹û³É¹¦£¬µ±Ç°Ï̻߳ñµÃËø£¬Èç¹ûʧ °Ü£¬±íʾÆäËûÏ߳̾ºÕùËø£¬µ±Ç°Ï̱߳㳢ÊÔʹÓÃ×ÔÐýÀ´»ñÈ¡Ëø¡£

displaced mark wordÊÇÕû¸öÇáÁ¿¼¶ËøÊµÏֵĹؼü£¬ÔÚCASÖеÄcompare¾ÍÐèÒªÓÃËü×÷ΪÌõ¼þ¡£ÔÚ¿½±´Íêobject mark wordÖ®ºó£¬JVM×öÁËÒ»²½½»»»Ö¸ÕëµÄ²Ù×÷½«object mark wordÀïµÄÇáÁ¿¼¶ËøÖ¸ÕëÖ¸Ïòlock recordËùÔÚµÄstackÖ¸Õ룬×÷ÓÃÊÇÈÃÆäËûÏß³ÌÖªµÀ£¬¸Ãobject monitorÒѱ»Õ¼Ó㨾ÍÏñÆ«ÏòËøÖÐÓÃCASµÄ·½Ê½½«mark wordµÄidÖ¸Ïòµ±Ç°³¢ÊÔ»ñÈ¡ËøµÄÏß³Ìid£¬ÕâÀïÊǽ«mark wordÖеÄÇáÁ¿¼¶ËøÖ¸ÕëÒÔCASµÄ·½Ê½³¢ÊÔÖ¸Ïòµ±Ç°Ï̵߳Älock record£¬ÕâÑù±ðµÄÏ̱߳ãÖªµÀµ±Ç°ÇáÁ¿ËøÒѾ­Ö¸Ïò±ðµÄÏß³ÌÁË£©¡£lock recordÀïµÄownerÖ¸ÕëÖ¸Ïòobject mark wordµÄ×÷ÓÃÊÇΪÁËÔÚ½ÓÏÂÀïµÄÔËÐйý³ÌÖУ¬Ê¶±ðÄĸö¶ÔÏó±»Ëø×¡ÁË¡£

ÇáÁ¿Ëø½âËø

ÇáÁ¿¼¶½âËøÊ±£¬»áʹÓÃÔ­×ÓµÄCAS²Ù×÷½«Displaced Mark WordÌæ»»»Øµ½¶ÔÏóÍ·£¬Èç¹û³É

¹¦£¬Ôò±íʾûÓоºÕù·¢Éú¡£Èç¹ûʧ°Ü£¬±íʾµ±Ç°Ëø´æÔÚ¾ºÕù£¬Ëø¾Í»áÅòÕͳÉÖØÁ¿¼¶Ëø¡£

ÇáÁ¿ËøµÄÅòÕÍÁ÷³ÌÈçÏÂͼʾ

ËùÒÔÓÉÇáÁ¿ËøÇл»µ½ÖØÁ¿Ëø£¬ÊÇ·¢ÉúÔÚÇáÁ¿ËøÊÍ·ÅËøµÄÆÚ¼ä£¬Ö®Ç°ÔÚ»ñÈ¡ËøµÄʱºòËü¿½±´ÁËËø¶ÔÏóÍ·µÄmark word£¬ÔÚÊÍ·ÅËøµÄʱºòÈç¹ûËü·¢ÏÖÔÚËü³ÖÓÐËøµÄÆÚ¼äÓÐÆäËûÏß³ÌÀ´³¢ÊÔ»ñÈ¡ËøÁË£¬²¢ÇÒ¸ÃÏ̶߳Ômark word×öÁËÐ޸ģ¬Á½Õ߱ȶԷ¢ÏÖ²»Ò»Ö£¬ÔòÇл»µ½ÖØÁ¿Ëø¡£

ÒòÎªÖØÁ¿¼¶Ëø±»ÐÞ¸ÄÁË£¬ËùÓÐdisplay mark wordºÍÔ­À´µÄmark word²»Ò»ÑùÁË¡£

ÒòΪ×ÔÐý»áÏûºÄCPU£¬ÎªÁ˱ÜÃâÎÞÓõÄ×ÔÐý£¨±ÈÈç»ñµÃËøµÄÏ̱߳»×èÈûסÁË£©£¬Ò»µ©ËøÉý¼¶³ÉÖØÁ¿¼¶Ëø£¬¾Í²»»áÔÙ»Ö¸´µ½ÇáÁ¿¼¶Ëø×´Ì¬¡£

ËøµÄÓÅȱµã¶Ô±È

Ô­×Ó²Ù×÷µÄʵÏÖÔ­Àí

ÊõÓﶨÒå

´¦ÀíÆ÷ʵÏÖÔ­×Ó²Ù×÷

ʹÓÃ×ÜÏßËø±£Ö¤Ô­×ÓÐÔ

Èç¹û¶à¸ö´¦ÀíÆ÷ͬʱ¶Ô¹²Ïí±äÁ¿½øÐжÁ¸Äд²Ù×÷

£¨i++¾ÍÊǾ­µäµÄ¶Á¸Äд²Ù×÷£©£¬ÄÇô¹²Ïí±äÁ¿¾Í»á±»¶à¸ö´¦ÀíÆ÷ͬʱ½øÐвÙ×÷£¬ÕâÑù¶Á¸Äд²Ù

×÷¾Í²»ÊÇÔ­×ӵ쬲Ù×÷ÍêÖ®ºó¹²Ïí±äÁ¿µÄÖµ»áºÍÆÚÍûµÄ²»Ò»Ö¡£

Ëùν×ÜÏßËø¾ÍÊÇʹÓô¦ÀíÆ÷ÌṩµÄÒ»¸ö

LOCK££Ðźţ¬µ±Ò»¸ö´¦ÀíÆ÷ÔÚ×ÜÏßÉÏÊä³ö´ËÐźÅʱ£¬ÆäËû´¦ÀíÆ÷µÄÇëÇ󽫱»×èÈûס£¬ÄÇô¸Ã

´¦ÀíÆ÷¿ÉÒÔ¶ÀÕ¼¹²ÏíÄÚ´æ¡£

ʹÓûº´æËø±£Ö¤Ô­×ÓÐÔ

µÚ¶þ¸ö»úÖÆÊÇͨ¹ý»º´æËø¶¨À´±£Ö¤Ô­×ÓÐÔ¡£ÔÚͬһʱ¿Ì£¬ÎÒÃÇÖ»Ðè±£Ö¤¶Ôij¸öÄÚ´æµØÖ·

µÄ²Ù×÷ÊÇÔ­×ÓÐÔ¼´¿É£¬µ«×ÜÏßËø¶¨°ÑCPUºÍÄÚ´æÖ®¼äµÄͨÐÅËø×¡ÁË£¬ÕâʹµÃËø¶¨ÆÚ¼ä£¬ÆäËû´¦

ÀíÆ÷²»ÄܲÙ×÷ÆäËûÄÚ´æµØÖ·µÄÊý¾Ý£¬ËùÒÔ×ÜÏßËø¶¨µÄ¿ªÏú±È½Ï´ó£¬Ä¿Ç°´¦ÀíÆ÷ÔÚijЩ³¡ºÏÏÂʹÓûº´æËø¶¨´úÌæ×ÜÏßËø¶¨À´½øÐÐÓÅ»¯¡£

Ëùν¡°»º´æËø¶¨¡±ÊÇÖ¸ÄÚ´æÇøÓòÈç¹û±»»º´æÔÚ´¦ÀíÆ÷µÄ»º´æ

ÐÐÖУ¬²¢ÇÒÔÚLock²Ù×÷ÆÚ¼ä±»Ëø¶¨£¬ÄÇôµ±ËüÖ´ÐÐËø²Ù×÷»ØÐ´µ½ÄÚ´æÊ±£¬´¦ÀíÆ÷²»ÔÚ×ÜÏßÉÏÉùÑÔLOCK££Ðźţ¬¶øÊÇÐÞ¸ÄÄÚ²¿µÄÄÚ´æµØÖ·£¬²¢ÔÊÐíËüµÄ»º´æÒ»ÖÂÐÔ»úÖÆÀ´±£Ö¤²Ù×÷µÄÔ­×ÓÐÔ£¬ÒòΪ»º´æÒ»ÖÂÐÔ»úÖÆ»á×èֹͬʱÐÞ¸ÄÓÉÁ½¸öÒÔÉÏ´¦ÀíÆ÷»º´æµÄÄÚ´æÇøÓòÊý¾Ý£¬µ±ÆäËû´¦ÀíÆ÷»ØÐ´Òѱ»Ëø¶¨µÄ»º´æÐеÄÊý¾Ýʱ£¬»áʹ»º´æÐÐÎÞЧ

ÓÐÁ½ÖÖÇé¿öÏ´¦ÀíÆ÷²»»áʹÓûº´æËø¶¨:

1. µ±²Ù×÷µÄÊý¾Ý²»Äܱ»»º´æÔÚ´¦ÀíÆ÷ÄÚ²¿£¬»ò²Ù×÷µÄÊý¾Ý¿ç¶à¸ö»º´æÐÐ

£¨cache line£©Ê±£¬Ôò´¦ÀíÆ÷»áµ÷ÓÃ×ÜÏßËø¶¨

2. ÓÐЩ´¦ÀíÆ÷²»Ö§³Ö»º´æËø¶¨¡£¶ÔÓÚIntel 486ºÍPentium´¦ÀíÆ÷£¬¾ÍËãËø¶¨µÄ

ÄÚ´æÇøÓòÔÚ´¦ÀíÆ÷µÄ»º´æÐÐÖÐÒ²»áµ÷ÓÃ×ÜÏßËø¶¨

javaÈçºÎʵÏÖÔ­×Ó²Ù×÷

ÔÚJavaÖпÉÒÔͨ¹ýËøºÍÑ­»·CASµÄ·½Ê½À´ÊµÏÖÔ­×Ó²Ù×÷

1. ʹÓÃÑ­»·CASʵÏÖÔ­×Ó²Ù×÷

2. CASʵÏÖÔ­×Ó²Ù×÷µÄÈý´óÎÊÌâ

- ABAÎÊÌâ

ÒòΪCASÐèÒªÔÚ²Ù×÷ÖµµÄʱºò£¬¼ì²éÖµÓÐûÓз¢Éú±ä»¯£¬Èç¹ûûÓз¢Éú±ä»¯

Ôò¸üУ¬µ«ÊÇÈç¹ûÒ»¸öÖµÔ­À´ÊÇA£¬±ä³ÉÁËB£¬ÓÖ±ä³ÉÁËA£¬ÄÇôʹÓÃCAS½øÐмì²éʱ»á·¢ÏÖËü

µÄֵûÓз¢Éú±ä»¯£¬µ«ÊÇʵ¼ÊÉÏÈ´±ä»¯ÁË¡£ABAÎÊÌâµÄ½â¾ö˼·¾ÍÊÇʹÓð汾ºÅ¡£ÔÚ±äÁ¿Ç°Ãæ

×·¼ÓÉϰ汾ºÅ£¬Ã¿´Î±äÁ¿¸üеÄʱºò°Ñ°æ±¾ºÅ¼Ó1£¬ÄÇôA¡úB¡úA¾Í»á±ä³É1A¡ú2B¡ú3A¡£´Ó

Java 1.5¿ªÊ¼£¬JDKµÄAtomic°üÀïÌṩÁËÒ»¸öÀàAtomicStampedReferenceÀ´½â¾öABAÎÊÌâ

- Ñ­»·Ê±¼ä³¤¿ªÏú´ó

×ÔÐýCASÈç¹û³¤Ê±¼ä²»³É¹¦£¬»á¸øCPU´øÀ´·Ç³£´óµÄÖ´ÐпªÏú¡£

- Ö»Äܱ£Ö¤Ò»¸ö¹²Ïí±äÁ¿µÄÔ­×Ó²Ù×÷

µ±¶ÔÒ»¸ö¹²Ïí±äÁ¿Ö´ÐвÙ×÷ʱ£¬ÎÒÃÇ¿ÉÒÔʹÓÃÑ­

»·CASµÄ·½Ê½À´±£Ö¤Ô­×Ó²Ù×÷£¬µ«ÊǶԶà¸ö¹²Ïí±äÁ¿²Ù×÷ʱ£¬Ñ­»·CAS¾ÍÎÞ·¨±£Ö¤²Ù×÷µÄÔ­×ÓÐÔ£¬Õâ¸öʱºò¾Í¿ÉÒÔÓÃËø¡£»¹ÓÐÒ»¸öÈ¡Çɵİ취£¬¾ÍÊǰѶà¸ö¹²Ïí±äÁ¿ºÏ²¢³ÉÒ»¸ö¹²Ïí±äÁ¿À´²Ù×÷¡£

3. ʹÓÃËø»úÖÆÊµÏÖÔ­×Ó²Ù×÷

Ëø»úÖÆ±£Ö¤ÁËÖ»ÓлñµÃËøµÄÏ̲߳ÅÄܹ»²Ù×÷Ëø¶¨µÄÄÚ´æÇøÓò¡£JVMÄÚ²¿ÊµÏÖÁ˺ܶàÖÖËø

»úÖÆ£¬ÓÐÆ«ÏòËø¡¢ÇáÁ¿¼¶ËøºÍ»¥³âËø¡£ÓÐÒâ˼µÄÊdzýÁËÆ«ÏòËø£¬JVMʵÏÖËøµÄ·½Ê½¶¼ÓÃÁËÑ­»·CAS£¬¼´µ±Ò»¸öÏß³ÌÏë½øÈëͬ²½¿éµÄʱºòʹÓÃÑ­»·CASµÄ·½Ê½À´»ñÈ¡Ëø£¬µ±ËüÍ˳öͬ²½¿éµÄʱºòʹÓÃÑ­»·CASÊÍ·ÅËø

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

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