javaÖйؼü×ÖvolatileµÄ×÷ÓÃ
ÓÃÔÚ¶àỊ̈߳¬Í¬²½±äÁ¿¡£ Ïß³ÌΪÁËÌá¸ßЧÂÊ£¬½«Ä³³ÉÔ±±äÁ¿(ÈçA)¿½±´ÁËÒ»·Ý£¨ÈçB£©£¬Ïß³ÌÖжÔAµÄ·ÃÎÊÆäʵ·ÃÎʵÄÊÇB¡£Ö»ÔÚijЩ¶¯×÷ʱ²Å½øÐÐAºÍBµÄͬ²½¡£Òò´Ë´æÔÚAºÍB²»Ò»ÖµÄÇé¿ö¡£volatile¾ÍÊÇÓÃÀ´±ÜÃâÕâÖÖÇé¿öµÄ¡£volatile¸æËßjvm£¬ ËüËùÐÞÊεıäÁ¿²»±£Áô¿½±´£¬Ö±½Ó·ÃÎÊÖ÷ÄÚ´æÖеģ¨Ò²¾ÍÊÇÉÏÃæËµµÄA)
=========================·Ö¸îÏß1=================================
°æÈ¨ÉùÃ÷ £º×ªÔØÊ±ÇëÒÔ³¬Á´½ÓÐÎʽ±êÃ÷ÎÄÕÂÔʼ³ö´¦ºÍ×÷ÕßÐÅÏ¢¼°±¾ÉùÃ÷
http://aleung.blogbus.com/logs/32090434.html
ÔÚJavaÄÚ´æÄ£ÐÍÖУ¬ÓÐmain memory£¬Ã¿¸öÏß³ÌÒ²ÓÐ×Ô¼ºµÄmemory (ÀýÈç¼Ä´æÆ÷)¡£ÎªÁËÐÔÄÜ£¬Ò»¸öÏ̻߳áÔÚ×Ô¼ºµÄmemoryÖб£³ÖÒª·ÃÎʵıäÁ¿µÄ¸±±¾¡£ÕâÑù¾Í»á³öÏÖͬһ¸ö±äÁ¿ÔÚij¸ö˲¼ä£¬ÔÚÒ»¸öÏ̵߳ÄmemoryÖеÄÖµ¿ÉÄÜÓëÁíÍâÒ»¸öÏß³ÌmemoryÖеÄÖµ£¬»òÕßmain memoryÖеÄÖµ²»Ò»ÖµÄÇé¿ö¡£
Ò»¸ö±äÁ¿ÉùÃ÷Ϊvolatile£¬¾ÍÒâζ×ÅÕâ¸ö±äÁ¿ÊÇËæÊ±»á±»ÆäËûÏß³ÌÐ޸ĵģ¬Òò´Ë²»Äܽ«ËücacheÔÚÏß³ÌmemoryÖС£ÒÔÏÂÀý×ÓÕ¹ÏÖÁËvolatileµÄ×÷Óãº
public class StoppableTask extends Thread {
private volatile boolean pleaseStop;
public void run() {
while (!pleaseStop) {
// do some stuff...
}
}
public void tellMeToStop() {
pleaseStop = true;
}
}¼ÙÈçpleaseStopûÓб»ÉùÃ÷Ϊvolatile£¬Ïß³ÌÖ´ÐÐrunµÄʱºò¼ì²éµÄÊÇ×Ô¼ºµÄ¸±±¾£¬¾Í²»Äܼ°Ê±µÃÖªÆäËûÏß³ÌÒѾµ÷ÓÃtellMeToStop()ÐÞ¸ÄÁËpleaseStopµÄÖµ¡£
VolatileÒ»°ãÇé¿öϲ»ÄÜ´úÌæsychronized£¬ÒòΪvolatile²»Äܱ£Ö¤²Ù×÷µÄÔ×ÓÐÔ£¬¼´Ê¹Ö»ÊÇi++£¬Êµ¼ÊÉÏÒ²ÊÇÓɶà¸öÔ×Ó²Ù×÷×é³É£ºread i; inc; write i£¬¼ÙÈç¶à¸öÏß³ÌͬʱִÐÐi++£¬volatileÖ»Äܱ£Ö¤ËûÃDzÙ×÷µÄiÊÇͬһ¿éÄڴ棬µ«ÒÀÈ»¿ÉÄܳöÏÖдÈëÔàÊý¾ÝµÄÇé¿ö¡£Èç¹ûÅäºÏJava 5Ôö¼ÓµÄatomic wrapper classes£¬¶ÔËüÃǵÄincreaseÖ®ÀàµÄ²Ù×÷¾Í²»ÐèÒªsychronized¡£
Reference£º
http://www.javamex.com/tutorials/synchronization_volatile.shtml
http://www.javamex.com/tutorials/synchronization_volatile_java_5.shtml
http://www.ibm.com/developerworks/cn/java/j-jtp06197.html
=========================·Ö¸îÏß2=================================
¿ÖűȽÏÒ»ÏÂvolatileºÍsynchronizedµÄ²»Í¬ÊÇ×îÈÝÒ×½âÊ
Ïà¹ØÎĵµ£º
ËãÊõÒì³£ÀࣺArithmeticExecption
¡¡¡¡¿ÕÖ¸ÕëÒì³£ÀࣺNullPointerException
¡¡¡¡ÀàÐÍÇ¿ÖÆ×ª»»Òì³££ºClassCastException
¡¡¡¡Êý×鸺ϱêÒì³££ºNegativeArrayException
¡¡¡¡Êý×éϱêÔ½½çÒì³££ºArrayIndexOutOfBoundsException
¡¡¡¡Î¥±³°²È«ÔÔòÒì³££ºSecturityException
¡¡¡¡ÎļþÒѽáÊøÒì³££ºEOFException
¡¡¡¡ÎļþÎ´Õ ......
ºÜ¾µäµÄ¶«Î÷,±»×ªµÄµ½´¦¶¼ÊÇ, ÏÈдÔÎÄ:
µÚÒ»£¬Ì¸Ì¸final, finally, finalizeµÄÇø±ð¡£
¡¡final ÓÃÓÚÉùÃ÷ÊôÐÔ£¬·½·¨ºÍÀ࣬·Ö±ð±íʾÊôÐÔ²»¿É±ä£¬·½·¨²»¿É¸²¸Ç£¬À಻¿É¼Ì³Ð¡£finallyÊÇÒì³£´¦ÀíÓï¾ä½á¹¹µÄÒ»²¿·Ö£¬±íʾ×ÜÊÇÖ´ÐС£finalizeÊÇ ObjectÀàµÄÒ»¸ö·½·¨£¬ÔÚÀ¬»øÊÕ¼¯Æ÷Ö´ÐеÄʱºò»áµ÷Óñ»»ØÊÕ¶ÔÏóµÄ´Ë·½·¨£¬¿ÉÒÔ¸²¸Ç ......
JAVA¿ÉÒÔ˵ÊÇ´ÓC++·¢Õ¹ÆðÀ´µÄÍêÈ«ÃæÏò¶ÔÏóµÄ¿ª·¢ÓïÑÔ,Á½ÕßµÄʵÖÊÇø±ðÊÇÀûÒæ·ÖÊô²»Í¬µÄ¹«Ë¾:SUNºÍ΢Èí.¶Ô´Ë΢Èí·¢²¼ÁË.NETÓëÖ®¿¹ºâ.
´Ó×îеÄVisual Studio .NET 2005¿´,.NETÖ÷ÒªÊÇ4ÖÖÓïÑÔ:VB.NET, C#, C++.NET, J#.
VB.NET¿ÉÒÔ˵ÊÇVB6µÄÉý¼¶,µ«ÎÒÈÏΪVB.NETºÍC#ÒѾÊÇÍêȫȫеÄÓïÑÔÁË,Á½ÕßµÄÄ¿µÄ¶¼ÊÇÒª´ò°ÜJAVAÕâ¸ö¾ºÕù¶ ......
1.Ì⣺javaÀúÊ·£¿
´ð£ºJava Ö®¸¸Golsling
1995 Äê5 ÔÂ23 ÈÕ Java µ®Éú
1998 Äê12 ÔÂ 1.2 °æ±¾Java2 J2SE J2EE J2ME
2004 Äê12 ÔÂ 1.5 °æ±¾(5.0) Java JavaSE JavaEE JavaME
2.Ì⣺JavaSE£¬JavaEE£¬JavaME£¿
´ð£ºJavaSE ---Java ±ê׼ƽ̨
JavaEE ---ÆóÒµ¼ ......