javaµÄÔ×Ó²Ù×÷ºÍvolatile
Ô×Ó²Ù×÷
ËùνÔ×Ó²Ù×÷,¾ÍÊÇ"²»¿ÉÖжϵÄÒ»¸ö»òһϵÁвÙ×÷" , ÔÚÈ·ÈÏÒ»¸ö²Ù×÷ÊÇÔ×ÓµÄÇé¿öÏ£¬¶àÏ̻߳·¾³ÀïÃæ£¬ÎÒÃÇ¿ÉÒÔ±ÜÃâ½ö½öΪ±£»¤Õâ¸ö²Ù×÷ ÔÚÍâΧ¼ÓÉÏÐÔÄܰº¹óµÄËø£¬ÉõÖÁ½èÖúÓÚÔ×Ó²Ù×÷£¬ÎÒÃÇ¿ÉÒÔʵÏÖ»¥³âËø¡£ ¹ØÓÚjavaÖеÄÔ×ÓÐÔ
Ô×ÓÐÔ¿ÉÒÔÓ¦ÓÃÓÚ³ýlongºÍdoubleÖ®ÍâµÄËùÓлù±¾ÀàÐÍÖ®Éϵġ°¼òµ¥²Ù×÷¡±¡£¶ÔÓÚ¶ÁÈ¡ºÍдÈë³ölongºÍdoubleÖ®ÍâµÄ»ù±¾ÀàÐͱäÁ¿ÕâÑùµÄ²Ù×÷ £¬¿ÉÒÔ±£Ö¤ËüÃǻᱻµ±×÷²»¿É·Ö£¨Ô×Ó£©µÄ²Ù×÷À´²Ù×÷¡£ volatile
µ±ÎÒÃǶ¨ÒåÒ»¸ö±äÁ¿£¬¼ÙÉè¾Í½Ðo°É£¬ÀíÂÛÉϽ²£¬Ã¿´ÎʹÓõ½oµÄʱºò£¬¶¼Ó¦¸Ã´ÓoµÄµØÖ·À´¶ÁÈ¡Õâ¸ö±äÁ¿£¬µ«ÊÇÕâ´æÔÚÒ»¸öЧÂÊÎÊÌ⣬¾ÍÊÇÿ´Î ʹÓÃoµÄʱºò¶¼Òª´ÓÄÚ´æÖÐȥȡֵ£¬È»ºóͨ¹ýϵͳ×ÜÏß´«µ½CPU´¦Àí£¬ÕâÑù¿ªÏú»áºÜ´ó¡£ËùÒÔ±àÒëÆ÷ΪÁËÓÅ»¯ÐÔÄÜ£¬°Ño·Å½øCPUµÄCacheÖУ¬¼ÙÈç oÔÚ¸³ÖµÆÚ¼äûÓб»¸Ä±ä£¬¾ÍÖ±½Ó´ÓCPUµÄCacheÀïÈ¡oµÄ¸±±¾À´½øÐи³Öµ¡£µ«ÊÇ"bug"Ò²ÏÔ¶øÒ×¼û£¬¿ÉÄÜoÒѾ±»Ò»¸öÏß³Ì¸Ä±ä¶øÖØÐÂд»ØÁËÄÚ´æ £¬µ«ÁíÒ»¸öÏ̲߳¢²»ÖªµÀ£¬ÒÀ¾É°´ÕÕÔÀ´µÄ¼Æ»®´ÓCPUµÄCacheÀï¶ÁoµÄ¸±±¾À´È¡Öµ£¬½á¹û²»ÐÒ·¢ÉúÁË¡£ ÓÚÊDZàÒëÆ÷µÄ¿ª·¢ÕßΪÁ˲¹¾ÈÕâÒ»"bug"£¬ÌṩÁËÒ»¸övolatileÈÿª·¢ÈËԱΪËûÃǵĹýʧÂñµ¥£¬»òÕß˵Ìṩ¸ø¿ª·¢ÈËÔ±ÁËÒ»¸öÑ¡ÔñЧÂʵÄȨÀû¡£ µ±±äÁ¿¼ÓÉÏÁËvolatileʱ£¬±àÒëÆ÷¾ÍÀÏÀÏʵʵµÄÿ´Î¶¼´ÓÄÚ´æÖжÁÈ¡Õâ¸ö±äÁ¿Öµ£¬·ñÔò¾Í»¹°´ÕÕÓÅ»¯µÄ·½°¸´ÓcacheÀï¶Á¡£ ÔÚÁ½¸ö»òÕ߸ü¶àµÄÏ̷߳ÃÎʵijÉÔ±±äÁ¿ÉÏʹÓÃvolatile½ÏºÃ£¬µ±Òª·ÃÎʵıäÁ¿ÒÑÔÚsynchronized´úÂë¿éÖУ¬»òÕßΪ³£Á¿Ê±£¬²»±ØÊ¹Óá£
Ïà¹ØÎĵµ£º
Java™ ÓïÑÔ°üº¬Á½ÖÖÄÚÔÚµÄͬ²½»úÖÆ£ºÍ¬²½¿é£¨»ò·½·¨£©ºÍ volatile ±äÁ¿¡£ÕâÁ½ÖÖ»úÖÆµÄÌá³ö¶¼ÊÇΪÁËʵÏÖ´úÂëÏ̵߳ݲȫÐÔ¡£ÆäÖÐ Volatile ±äÁ¿µÄͬ²½ÐԽϲµ«ÓÐʱËü¸ü¼òµ¥²¢ÇÒ¿ªÏú¸üµÍ£©£¬¶øÇÒÆäʹÓÃÒ²¸üÈÝÒ׳ö´í¡£ÔÚÕâÆÚµÄ Java ÀíÂÛÓëʵ¼ù
ÖУ¬Brian Goetz ½«½éÉܼ¸ÖÖÕýȷʹÓà volatile ±äÁ¿µÄģʽ£¬²¢Õë¶ÔÆäÊÊÓ ......
µÚÒ»²¿·Ö. Ìáʾ
ÎÒÐèÒª¶ÁÕâÆªÎÄÕÂÂð£¿
JavaÀà¼ÓÔØÆ÷¶ÔJavaϵͳµÄÔËÐÐÊÇÖÁ¹ØÖØÒªµÄ£¬µ«ÊÇÈ´³£³£±»ÎÒÃǺöÂÔ¡£JavaÀà¼ÓÔØÆ÷¸ºÔØ
ÔÚÔËÐÐʱ²éÕҺͼÓÔØÀà¡£×Ô¶¨ÒåÀà¼ÓÔØÆ÷¿ÉÒÔÍêÈ«¸Ä±äÀàµÄ¼ÓÔØ·½Ê½£¬ÒÔ×Ô¼ºÏ²»¶µÄ·½Ê½À´
¸öÐÔ»¯ÄãµÄJavaÐéÄâ»ú¡£±¾ÎļòÒªµÄ½éÉÜJavaÀà¼ÓÔØÆ÷£¬È»ºóͨ¹ýÒ»¸ö¹¹Ôì×Ô¶¨ÒåÀà¼ÓÔØÆ÷
µÄÀý×ÓÀ´ËµÃ÷£¬Õâ ......
ÎÒÃǾ³£ÏÂÔØ¿ªÔ´ÏîÄ¿µÄÔ´ÂëÔÚ±¾µØ±àÒë,ÊDz»ÊǾ³£±»Ò»¾ä"assert expression"¸ø¸ãµÃ±àÒë²»¹ýÈ¥£¬¾³£ÊÇÔÚÀϰ汾µÄjdk±àÒëÆ÷ÏÂû°ì·¨£¬ÏÂÃæ¾ÍÏò´ó¼ÒÍÆ¼öһƪÉîÈë·ÖÎöjava assertionµÄÎÄÕ¡£
Ò»¡¢assertionµÄÓï·¨ºÍÓïÒå
J2SE 1.4ÔÚÓïÑÔÉÏÌṩÁËÒ»¸öÐÂÌØÐÔ£¬¾ÍÊÇassertion(¶ÏÑÔ)¹¦ÄÜ£¬ËüÊǸð汾ÔÚJavaÓïÑÔ·½Ãæ×î´ ......
µÚ¶þÖÖ¼òµ¥µÄ·½·¨¾ÍÊÇ,ÔÚhttp://proguard.sourceforge.net/ÏÂÔØZIP°ü.×îеÄÊÇ4.5BETA
½âѹËõºó,Ë«»÷proguardgui.jar
ÔËÐÐÈí¼þ
×îɵ¹ÏµÄÉèÖ÷½·¨:ÉèÖúÃINPUT/OUTPUT,µãPROCESS.½á¹û¾Í³öÀ´ÁË.
Éú³ÉÁË.a.class.b.class ÓÃJAD·´±àÒë,JADÌáʾ:²»ÄÜÍêÕûµÄ·´±àÒë....,´ò¿ª±àÒëºóµÄ´úÂë±äÁ¿ºÍº¯ÊýÃûÈ«²¿±»Ì ......
package algorithm.binarytree;
import java.util.Arrays;
import java.util.Stack;
import util.ArrayUtil;
import util.OutputUtil;
public class BinTree {
private BinNode root = null;
public BinTree()
{
}
&nb ......