¸ã¶®javaÖеÄsynchronized¹Ø¼ü×Ö
ʵ¼ÊÉÏ£¬ÎÒ¹ØÓÚjavaµÄ»ù´¡ÖªÊ¶µÄ90%ÒÔÉ϶¼À´×ÔThinking in Java¡£¶ÔÓÚÆäÖеÄsynchronized¹Ø¼ü×Ö£¬µ±Ê±¾ÍÊÇä¯ÀÀһϣ¬´ó¸ÅÖªµÀÒâ˼£¬Ò²Ã»ÓÐϸ¿´¡£ºóÀ´Ò»Ö±Ã»ÓÐÓùýÕâ¸ö¹Ø¼ü×Ö¡£×òÌì¿´Thinking in Patterns with JavaÖеÄObserverģʽ£¬¿´ÁËÆäÖеÄObservableÀàµÄÔ´Â룬·¢ÏÖÀïÃæ¼¸ºõËùÓеķ½·¨¶¼ÓÃÁËsynchronized¹Ø¼ü×Ö£¨²»ÊÇÈ«²¿£©£¬ÆäÖиö±ðÓÃÁËsynchronized(this){}µÄÇø¿é¡£ÓÚÊÇ£¬ÎÒ·¢¾õÓбØÒªºÃºÃÀí½âÒ»ÏÂÕâ¸ö¹Ø¼ü×ÖÁË¡£
ÎÒÔٴο´Á˺î½ÝÒëµÄThinking in JavaµÚ¶þ°æÖÐÎİ棬µÃµ½ÓйØsynchronizedµÄÈçÏÂÐÅÏ¢£º
1¡¢synchronized¹Ø¼ü×ÖµÄ×÷ÓÃÓòÓжþÖÖ£º
1£©ÊÇij¸ö¶ÔÏóʵÀýÄÚ£¬synchronized aMethod(){}¿ÉÒÔ·ÀÖ¹¶à¸öÏß³Ìͬʱ·ÃÎÊÕâ¸ö¶ÔÏóµÄsynchronized·½·¨£¨Èç¹ûÒ»¸ö¶ÔÏóÓжà¸ösynchronized·½·¨£¬Ö»ÒªÒ»¸öÏ̷߳ÃÎÊÁËÆäÖеÄÒ»¸ösynchronized·½·¨£¬ÆäËüÏ̲߳»ÄÜͬʱ·ÃÎÊÕâ¸ö¶ÔÏóÖÐÈκÎÒ»¸ösynchronized·½·¨£©¡£Õâʱ£¬²»Í¬µÄ¶ÔÏóʵÀýµÄsynchronized·½·¨ÊDz»Ïà¸ÉÈŵġ£Ò²¾ÍÊÇ˵£¬ÆäËüÏß³ÌÕÕÑù¿ÉÒÔͬʱ·ÃÎÊÏàͬÀàµÄÁíÒ»¸ö¶ÔÏóʵÀýÖеÄsynchronized·½·¨£»
2£©ÊÇij¸öÀàµÄ·¶Î§£¬synchronized static aStaticMethod{}·ÀÖ¹¶à¸öÏß³Ìͬʱ·ÃÎÊÕâ¸öÀàÖеÄsynchronized static ·½·¨¡£Ëü¿ÉÒÔ¶ÔÀàµÄËùÓжÔÏóʵÀýÆð×÷Óá£
2¡¢³ýÁË·½·¨Ç°ÓÃsynchronized¹Ø¼ü×Ö£¬synchronized¹Ø¼ü×Ö»¹¿ÉÒÔÓÃÓÚ·½·¨ÖеÄij¸öÇø¿éÖУ¬±íʾֻ¶ÔÕâ¸öÇø¿éµÄ×ÊԴʵÐл¥³â·ÃÎÊ¡£Ó÷¨ÊÇ: synchronized(this){/*Çø¿é*/}£¬ËüµÄ×÷ÓÃÓòÊǵ±Ç°¶ÔÏó£»
3¡¢synchronized¹Ø¼ü×ÖÊDz»Äܼ̳еģ¬Ò²¾ÍÊÇ˵£¬»ùÀàµÄ·½·¨synchronized f(){} Ôڼ̳ÐÀàÖв¢²»×Ô¶¯ÊÇsynchronized f(){}£¬¶øÊDZä³ÉÁËf(){}¡£¼Ì³ÐÀàÐèÒªÄãÏÔʽµÄÖ¸¶¨ËüµÄij¸ö·½·¨Îªsynchronized·½·¨£»
4¡¢ÒÉÎÊ£º
ÎÒÖªµÀÁËÓÐstaticÇø¿é£¨ÆäÖеļÓÔØÊ±»úºÃÏñÒ²²»Çå³þ£¬ÐèҪѧϰһÏ£¬ÔÀ´¿´Thinking in JavaºÃÏñÊÇ˵: staticÇø¿é¼ÓÔØµÄʱ»úÊÇÀàµÄÒ»¸ö¶ÔÏóʵÀý´´½¨»òÀàµÄÒ»¸östatic·½·¨±»·ÃÎÊ£¬µ«ÊÇÎÒ½ñÌìÔçÉÏ¿´ÁËjavaeye.comÉÏÃæµÄÒ»¸ö¹ØÓÚ“<static¿éµ½µ×ʲôʱºòÖ´ÐУ¿-eway -JavaEye¼¼ÊõÉçÇø>”µÄÎÄÕºóÓÖÓеãÃÔºýÁË£º£©£¬Ò²Ðí£¬ÐèÒªÈÏÕæÑ§Ï°Ò»ÏÂJVMµÄÄÚÔÚ»úÖÆ²ÅÊÇÀí½âÕâÀàÎÊÌâ×î¸ù±¾µÄ;¾¶£©£¬Ò²ÓÐsynchronizedÇø¿é£¬ÄÇô£¬ÓÐsynchronized static Çø¿éÂð£¿Òâ˼ÊÇÎÊ£ºÓÐûÓÐÒ»¸öÀà×÷ÓÃÓòÄÚµÄsynchronizedÇø¿é£¿
½ñÌ죬дÁËÏÂÃæÕâ¸öÀý×ÓÑéÖ¤ÁËÉÏÃæÓÐûÓÐÒ»¸öÀ෶ΧµÄsynchronized »ò synchronized static ¿é£¬½áÂÛÊÇûÓÐÕâÑù
Ïà¹ØÎĵµ£º
º®¼Ùµ½À´ÏëÔÚ¼Òѧµã¶«Î÷£¬ÎҾʹÓÍøÕ¾ÏÂÁËjdk1.6¡£ÏÂÈí¼þÊǺܼòµ¥ÔÚ°²×°Ê±ÓÖÖØÏÖ֮ǰ°²×°µÄÎÊÌ⣬»·¾³±äÁ¿Ð޸IJ»¶Ô¡£ÔÚÄǺķÑÁËÒ»¸ö¶àСʱû¸ãºÃ£¬ºÜÓôÃÆ¡£±ðÈË×°µÄÄÇô¼òµ¥£¬ÎÒÔõôŪÆðÀ´ÄÇô·ÑÊÂÄØ¡£ÎÒÔÚÍøÉϾÍÈ¥ËÑË÷½á¹û¶¼²»Æ¥Å䣬տµÄ°ÑŪ»ðÁË¡£»¹±»Ê¦ÐÖºÍÀÏʦ˵ÁË£¬»Øµ½ÇÞÊÒÎÒÄÃÆðÊéÒ»¿´£¬ÏȰ´ÊéÉϵ ......
ת£ºhttp://www.ibm.com/developerworks/cn/java/j-jtp06197.html
2007 Äê 7 ÔÂ 05 ÈÕ
Java™ ÓïÑÔ°üº¬Á½ÖÖÄÚÔÚµÄͬ²½»úÖÆ£ºÍ¬²½¿é£¨»ò·½·¨£©ºÍ volatile ±äÁ¿¡£ÕâÁ½ÖÖ»úÖÆµÄÌá³ö¶¼ÊÇΪÁËʵÏÖ´úÂëÏ̵߳ݲȫÐÔ¡£ÆäÖÐ Volatile ±äÁ¿µÄͬ²½ÐԽϲµ«ÓÐʱËü¸ü¼òµ¥²¢ÇÒ¿ªÏú¸üµÍ£©£¬¶øÇÒÆäʹÓÃÒ²¸üÈÝÒ׳ö´í¡£ÔÚÕâÆÚµÄ&nb ......
»º´æ¶ÔÏóÐèÒªÖªµÀ¶ÔÏóÕ¼ÓÿռäµÄ´óС,¿ÉÒÔÊÂÏÈÉèÖúÃÿÖÖÀàÐ͵ĴóС,´Ë·½·¨¶ÔÆÕͨµÄ¶ÔÏóÆðЧ,JiveÂÛ̳ÖеĶÔÏóÒ²ÊDzÉÓÃÕâÖÖ°ì·¨À´»ñÈ¡¶ÔÏóµÄ´óСµÄ(È¡×ÔJive).
public class CacheSizes {
/**
* Returns the size in bytes of a basic Object. This method should only
* be used for actual Object obje ......
JavaÊäÈëÊý¾ÝÁ÷
ÔÚJavaÖУ¬ÎÒÃǰÑÄܹ»¶Áȡһ¸ö×Ö½ÚÐòÁеĶÔÏó³Æ×÷Ò»¸öJavaÊäÈëÊý¾ÝÁ÷;¶øÎÒÃǰѹ»Ð´Ò»¸ö×Ö½ÚÐòÁгÆ×÷Ò»¸öÊä³öÁ÷¡£ËüÃÇ·Ö±ðÓɳéÏóÀà InputStreamºÍOutputStreamÀà±íʾ¡£ÒòÎªÃæÏò×Ö½ÚµÄÁ÷²»·½±ãÓÃÀ´´¦Àí´æ´¢ÎªUnicode£¨Ã¿¸ö×Ö·ûʹÓÃÁ½¸ö×Ö½Ú)µÄÐÅÏ¢¡£ËùÒÔJava ÒýÈëÁËÓÃÀ´´¦ÀíUnicode×Ö·ûµÄÀà²ã´Î£¬ÕâЩÀàÅÉÉú× ......
1£©¸ÅÄ
ÊÇÔÚÔËÐÐ״̬ÖУ¬¶ÔÓÚÈÎÒâÒ»¸öÀ࣬¶¼Äܹ»ÖªµÀÕâ¸öÀàµÄËùÓÐÊôÐԺͷ½·¨£»¶ÔÓÚÈÎÒâÒ»¸ö¶ÔÏ󣬶¼Äܹ»µ÷ÓÃËüµÄÈÎÒâÒ»¸ö·½·¨£»ÕâÖÖ¶¯Ì¬»ñÈ¡µÄÐÅÏ¢ÒÔ¼°¶¯Ì¬µ÷ÓöÔÏóµÄ·½·¨µÄ¹¦ÄܳÆÎªjavaÓïÑԵķ´Éä»úÖÆ¡£
2£©¹¦ÄÜ£º
ÔÚÔËÐÐʱÅжÏÈÎÒâÒ»¸ö¶ÔÏóËùÊôµÄÀࣻ
ÔÚÔËÐÐʱ ......