javaÖÐvolatile¹Ø¼ü×ÖµÄÓ÷¨ºÍÔÀí
javaÖÐvolatile¹Ø¼ü×ÖµÄÓ÷¨ºÍÔÀí
±¾ÎÄÀ´×ÔCSDN²©¿Í£ºhttp://blog.csdn.net/litao1102/archive/2009/10/07/4639155.aspx
ÎÒÃÇÖªµÀ£¬ÔÚJavaÖÐÉèÖñäÁ¿ÖµµÄ²Ù×÷£¬³ýÁËlongºÍdoubleÀàÐ͵ıäÁ¿ÍⶼÊÇÔ×Ó²Ù×÷£¬Ò²¾ÍÊÇ˵£¬¶ÔÓÚ±äÁ¿ÖµµÄ¼òµ¥¶Áд²Ù×÷ûÓбØÒª½øÐÐͬ²½¡£
ÕâÔÚJVM 1.2֮ǰ£¬JavaµÄÄÚ´æÄ£ÐÍʵÏÖ×ÜÊÇ´ÓÖ÷´æ¶ÁÈ¡±äÁ¿£¬ÊDz»ÐèÒª½øÐÐÌرðµÄ×¢ÒâµÄ¡£¶øËæ×ÅJVMµÄ³ÉÊìºÍÓÅ»¯£¬ÏÖÔÚÔÚ¶àÏ̻߳·¾³ÏÂvolatile¹Ø¼ü×ÖµÄʹÓñäµÃ·Ç³£ÖØÒª¡£
ÔÚµ±Ç°µÄJavaÄÚ´æÄ£ÐÍÏ£¬Ï߳̿ÉÒ԰ѱäÁ¿±£´æÔÚ±¾µØÄڴ棨±ÈÈç»úÆ÷µÄ¼Ä´æÆ÷£©ÖУ¬¶ø²»ÊÇÖ±½ÓÔÚÖ÷´æÖнøÐжÁд¡£Õâ¾Í¿ÉÄÜÔì³ÉÒ»¸öÏß³ÌÔÚÖ÷´æÖÐÐÞ¸ÄÁËÒ»¸ö±äÁ¿µÄÖµ£¬¶øÁíÍâÒ»¸öÏ̻߳¹¼ÌÐøʹÓÃËüÔڼĴæÆ÷ÖеıäÁ¿ÖµµÄ¿½±´£¬Ôì³ÉÊý¾ÝµÄ²»Ò»Ö¡£
Òª½â¾öÕâ¸öÎÊÌ⣬ֻÐèÒªÏñÔÚ±¾³ÌÐòÖеÄÕâÑù£¬°Ñ¸Ã±äÁ¿ÉùÃ÷Ϊvolatile£¨²»Îȶ¨µÄ£©¼´¿É£¬Õâ¾ÍָʾJVM£¬Õâ¸ö±äÁ¿ÊDz»Îȶ¨µÄ£¬Ã¿´ÎʹÓÃËü¶¼µ½Ö÷´æÖнøÐжÁÈ¡¡£Ò»°ã˵À´£¬¶àÈÎÎñ»·¾³Ï¸÷ÈÎÎñ¼ä¹²ÏíµÄ±êÖ¾¶¼Ó¦¸Ã¼ÓvolatileÐÞÊΡ£
VolatileÐÞÊεijÉÔ±±äÁ¿ÔÚÿ´Î±»Ï̷߳ÃÎÊʱ£¬¶¼Ç¿ÆÈ´Ó¹²ÏíÄÚ´æÖÐÖضÁ¸Ã³ÉÔ±±äÁ¿µÄÖµ¡£¶øÇÒ£¬µ±³ÉÔ±±äÁ¿·¢Éú±ä»¯Ê±£¬Ç¿ÆÈÏ߳̽«±ä»¯Öµ»Øдµ½¹²ÏíÄÚ´æ¡£ÕâÑùÔÚÈκÎʱ¿Ì£¬Á½¸ö²»Í¬µÄÏß³Ì×ÜÊÇ¿´µ½Ä³¸ö³ÉÔ±±äÁ¿µÄͬһ¸öÖµ¡£
JavaÓïÑԹ淶ÖÐÖ¸³ö£ºÎªÁË»ñµÃ×î¼ÑËٶȣ¬ÔÊÐíÏ̱߳£´æ¹²Ïí³ÉÔ±±äÁ¿µÄ˽Óп½±´£¬¶øÇÒÖ»µ±Ï߳̽øÈë»òÕßÀ뿪ͬ²½´úÂë¿éʱ²ÅÓë¹²Ïí³ÉÔ±±äÁ¿µÄÔʼֵ¶Ô±È¡£
ÕâÑùµ±¶à¸öÏß³ÌͬʱÓëij¸ö¶ÔÏó½»»¥Ê±£¬¾Í±ØÐëҪעÒâµ½ÒªÈÃÏ̼߳°Ê±µÄµÃµ½¹²Ïí³ÉÔ±±äÁ¿µÄ±ä»¯¡£
¶øvolatile¹Ø¼ü×Ö¾ÍÊÇÌáʾVM£º¶ÔÓÚÕâ¸ö³ÉÔ±±äÁ¿²»Äܱ£´æËüµÄ˽Óп½±´£¬¶øÓ¦Ö±½ÓÓë¹²Ïí³ÉÔ±±äÁ¿½»»¥¡£
ʹÓý¨Ò飺ÔÚÁ½¸ö»òÕ߸ü¶àµÄÏ̷߳ÃÎʵijÉÔ±±äÁ¿ÉÏʹÓÃvolatile¡£µ±Òª·ÃÎʵıäÁ¿ÒÑÔÚsynchronized´úÂë¿éÖУ¬»òÕßΪ³£Á¿Ê±£¬²»±ØʹÓá£
ÓÉÓÚʹÓÃvolatileÆÁ±ÎµôÁËVMÖбØÒªµÄ´úÂëÓÅ»¯£¬ËùÒÔÔÚЧÂÊÉϱȽϵͣ¬Òò´ËÒ»¶¨ÔÚ±ØҪʱ²ÅʹÓô˹ؼü×Ö¡£
Ê×ÏÈÿ¸öÏ̶߳¼ÓÐ×Ô¼ºÒ»¸ö¹¤×÷ÄÚ´æÇø£¬¶à¸öÏ̹߳²ÏíÒ»¸öÖ÷ÄÚ´æÇø¡£Ïß³ÌÖеı¾µØ±äÁ¿´æÔÚ×Ô¼ºµÄÄÚ´æÇøÖУ¬Èçfor£¨int i=0£»i<100;i++£©{this.i=i;}£¬ÆäÖÐi¾Í´æÔÚÏ̹߳¤×÷ÄÚ´æÖУ¬¼´Ã¿¸öÏ̶߳¼ÓÐÒ»¸ö£¬²»ÓÃÒ²²»ÄܼÓvolatile¹Ø¼ü×Ö,this.i¾ÍÊǹ²Ïí±äÁ¿¡£¶ø¹²ÏíµÄ±äÁ¿¾Í´æÔÚÖ÷ÄÚ´æÇøÀµ«JavaÏß³ÌΪÁËÌá¸ßЧÂÊ£¬»á°Ñ¹²Ïí±äÁ¿¿½±´µ½×Ô¼
Ïà¹ØÎĵµ£º
JVMÄÚ´æµÄÉèÖõÄÔÀí
ĬÈϵÄjavaÐéÄâ»úµÄ´óС±È½ÏС£¬ÔÚ¶Ô´óÊý¾Ý½øÐд¦Àíʱjava¾Í»á±¨´í£ºjava.lang.OutOfMemoryError¡£
ÉèÖÃjvmÄÚ´æµÄ·½·¨£¬¶ÔÓÚµ¥¶ÀµÄ.class£¬¿ÉÒÔÓÃÏÂÃæµÄ·½·¨¶ÔTestÔËÐÐʱµÄjvmÄÚ´æ½øÐÐÉèÖá£
java -Xms64m -Xmx256m Test
-XmsÊÇÉèÖÃÄÚ´æ³õʼ»¯µÄ´óС
-XmxÊÇÉèÖÃ×î´óÄܹ»Ê¹ÓÃÄÚ´æµÄ´óС£¨ ......
package com.ghb.crp.file;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutput ......
²ÊÎåÁ¬ÖéÓÎÏ·¿ª·¢¹ý³Ì
²ÊÎåÁ¬Ö飬һ¿ªÊ¼½Ð“Îå²ÊÁ¬Ö锣¬Í¬Ñ§¿¹Òé˵²»»áÍ棬ÒòΪËýÀí½â³ÉÁËÒª°ÑÎåÖÖ²»Í¬ÑÕÉ«µÄÇòÁ¬³ÉÒ»Ïß²ÅÄÜÓ®£¬¿¼Âǵ½Õâ¸ö±êÌâµÄÈ·ÒýÈËÎó½â£¬ÓÎÏ·ÓÖûÓÐÈκÎ˵Ã÷£¬×îÖÕ°ÑÃû³Æ¸Ä³ÉÁË“²ÊÎåÁ¬Ö锡£ÕâÊÇÒ»¸öºÜ¾µäµÄСÓÎÏ·£¬ºÜ¶àÊÖ»úÀﶼÓУ¬×î½üÒòΪѧϰjava£¬×÷ΪÁ·Ï°£¬°ÑÕâ¸öÓÎÏ·×ö ......
µÚÒ»£¬ ̸̸final, finally, finalizeµÄÇø±ð¡£ £¨×î³£±»Îʵ½£©
finalÐÞÊηû£¨¹Ø¼ü×Ö£©
Èç¹ûÒ»¸öÀà±»ÉùÃ÷Ϊfinal£¬Òâζ×ÅËü²»ÄÜÔÙÅÉÉú³öеÄ×ÓÀ࣬²»ÄÜ×÷Ϊ¸¸Àà±»¼Ì³Ð¡£Òò´ËÒ»¸öÀ಻Äܼȱ»ÉùÃ÷Ϊabstract£¬ÓÖ±»ÉùÃ÷Ϊfinal¡£½«±äÁ¿»ò·½·¨ÉùÃ÷Ϊfinal£¬¿ÉÒÔ±£Ö¤ËüÃÇÔÚʹÓÃÖв»±»¸Ä±ä¡£Æä³õʼ»¯¿ÉÒÔÔÚÁ½¸öµØ·½ ......