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µÄ²»Í¬ÊÇ×îÈÝÒ×½âÊ
Ïà¹ØÎĵµ£º
Ä¿Ç°ÍøÂçÉϹØÓÚ¶ÔÏóÐòÁл¯µÄÎÄÕ²»ÉÙ£¬µ«ÊÇÎÒ·¢ÏÖÏêϸÐðÊöÓ÷¨ºÍÔÀíµÄÎÄÕÂÌ«ÉÙ¡£±¾È˰Ñ×Ô¼º¾¹ý¾Ñé×ܽáºÍʵ¼ÊÔËÓÃÖеÄÌå»áд³ÉµÄѧϰ±Ê¼Ç¹±Ï׸ø´ó¼Ò¡£Ï£ÍûÄÜΪÕû¸öjavaÉçÇøµÄ·±ÈÙ×öÒ»µãÊÂÇé¡£
¡¡¡¡ÐòÁл¯µÄ¹ý³Ì¾ÍÊǶÔÏóдÈë×Ö½ÚÁ÷ºÍ´Ó×Ö½ÚÁ÷ÖжÁÈ¡¶ÔÏó¡£½«¶ÔÏó״̬ת»»³É×Ö½ÚÁ÷Ö®ºó£¬¿ÉÒÔÓÃjava.io°üÖеĸ÷ÖÖ×Ö½ÚÁ÷Àà½«Æ ......
javaдÎļþÂÒÂë
StringBuffer sb = new StringBuffer();
sb.append("<table border=\"0\" width=\"100%\" cellpadding=\"0\" cellspacing=\"1\" bgcolor=\"b5d6e6\"");
sb.append("<tr>");
sb.append("<td bgcolor=\"#FFFFFE\" height=\"42\" colspan=\""+ (jsd ......
±¾ÎÄÊ×ÏÈÉè¼ÆÒ»¸öµ¥´Î¶¨Ê±Æ÷Timer+TimerTask£¬È»ºóÔٴλù´¡ÉÏÉè¼ÆÒ»¸öÑ»·¶¨Ê±Æ÷¡£
ÎÒ½«°Ñ java.util.Timer ºÍ java.util.TimerTask ͳ³ÆÎª Java ¼ÆÊ±Æ÷¿ò¼Ü£¬ËüÃÇʹ³ÌÐòÔ±¿ÉÒÔºÜÈÝÒ׵ؼƻ®¼òµ¥µÄÈÎÎñ£¨×¢ÒâÕâЩÀàÒ²¿ÉÓÃÓÚ J2ME ÖУ©¡£²»¹ý£¬Java ¼ÆÊ±Æ÷¿ò¼ÜûÓÐ× ......
×÷ΪJava³ÌÐòÔ±À´Ëµ£¬×îÍ´¿àµÄÊÂÇéιýÓÚ¿ÉÒÔÑ¡ÔñµÄ·¶Î§Ì«¹ã£¬¿ÉÒÔ¶ÁµÄÊéÌ«¶à£¬ÍùÍùÈÝÒ×ÎÞËùÊÊ´Ó¡£ÎÒÏë¾ÍÎÒ×Ô¼º¶Á¹ýµÄ¼¼ÊõÊé¼®ÖÐÌôÑ¡³öÀ´Ò»Ð©£¬°´ÕÕѧϰµÄÏȺó˳Ðò£¬ÍƼö¸ø´ó¼Ò£¬ÌرðÊÇÄÇЩÏë²»¶ÏÌá¸ß×Ô¼º¼¼ÊõˮƽµÄJava³ÌÐòÔ±ÃÇ¡£
¡¡¡¡Ò»¡¢Java±à³ÌÈëÃÅÀà
¡¡¡¡¶ÔÓÚûÓÐJava±à³Ì¾ÑéµÄJava³ÌÐòÔ±ÒªÈëÃÅ£¬Ëæ±ã¶ÁʲôÈëÃÅÊé ......
commons-digester.jar
Digester»ùÓÚ¹æÔòµÄXMLÎĵµ½âÎö,Ö÷ÒªÓÃÓÚXMLµ½Java¶ÔÏóµÄÓ³Éä.
commons-beanutils.jar
Ìṩ¶ÔJava ·´ÉäºÍ×ÔÊ¡APIµÄ°ü×°.
aspectjweaver.jar
ÓÃÓÚÔÚSpring 2.0Öм¯³ÉAspectJ AspectJ LTWÖ¯ÈëÆ÷
ognl.jar
OGNLÊÇObject-Graph Navigation LanguageµÄËõд£¬ËüÊÇÒ»ÖÖ¹¦ÄÜÇ¿´óµÄ±í´ïʽÓïÑÔ£¨E ......