¡¾ºÚÂí³ÌÐòÔ±¡¿JavaÖе¥ÀýÉè¼ÆÄ£Ê½µÄ¼¸ÖÖ³£¼ûд·¨
ǰ¼¸ÌìÔÚÉÏJava»ù´¡¿ÎµÄʱºò£¬½²µ½private¹Ø¼ü×ÖµÄ×÷Ó㬾ÍÊÇËùÓб»privateÐÞÊεijÉÔ±±äÁ¿ºÍ³£Á¿¶¼Ö»ÄÜÔÚ±¾ÀàÖÐʹÓá£Ò²¾Í˵¹¹Ôì·½·¨Ò»µ©±»privateÐÞÊξÍÖ»ÄÜÔÚ±¾ÀàÖÐʹÓᣲ»ÄÜÔÙÍⲿ´´½¨±¾ÀàµÄʵÀý¡£Ò»°ãµÄÓ¦Óó¡¾°ÓÐÁ½¸ö£¬Ò»¸öÊǹ¤¾ßÀ࣬ÎÒÃǾÍÊDz»Ï£Íû±ðÈË´´½¨¶ÔÏó£¬ËùÒ԰ѹ¹Ôì·½·¨Ë½Óл¯¡£ÁíÒ»¸ö¾ÍÊǵ¥ÀýÉè¼ÆÄ£Ê½ÖУ¬ÎÒÃÇÒ²²»Ï£Íû±ðÈËËæÒâ´´½¨ÊµÀý£¬ÒªÏëµÃµ½±¾ÀàµÄʵÀý£¬±ØÐëµ÷ÓøøÌṩµÄstaticµÄ»ñȡʵÀýµÄ·½·¨²Å¿ÉÒÔ¡£½ñÌìÔÛÃǾÍÀ´×ܽáһϣ¬µ¥ÀýÉè¼ÆÄ£Ê½µÄ¼¸ÖÖ³£¼ûµÄд·¨ÓÐʲôÓÅȱµã¡£ µÚÒ»ÖÖ£¬ÀÁººÊ½£¬Ï̲߳»°²È«
01 public class Singleton {
02 private static Singleton instance; 03 private Singleton (){} 04
05 public static Singleton getInstance() { 06 if (instance == null) {
07 instance = new Singleton(); 08 }
09 return instance; 10 } 11 }
µÚ¶þÖÖ£¬ÀÁººÊ½£¬Ḭ̈߳²È«
01 public class Singleton {
02 private static Singleton instance; 03 private Singleton (){}
04 public static synchronized Singleton getInstance() { 05 if (instance == null) {
06 instance = new Singleton(); 07 }
08 return instance; 09 } 10 }
ºÚÂí³ÌÐòÔ±¼ÃÄÏÖÐÐÄ ±àÖø
ÕâÖÖд·¨£¬ËäÈ»¶àÏ̵߳Äʱºò²»»á³öÎÊÌ⣬µ«ÊÇЧÂÊÌ«µÍ¡£ µÚÈýÖÖ£¬¶öººÊ½
1 public class Singleton {
2 private static Singleton instance = new Singleton(); 3 private Singleton (){}
4 public static Singleton getInstance() { 5 return instance; 6 } 7 }
ÔÚÀà¼ÓÔØÊ±´´½¨£¬±ÜÃâ¶àÏ̵߳ÄÎÊÌâ¡£ µÚËÄÖÖ£¬¾²Ì¬ÄÚ²¿Àà
1 public class Singleton {
2 private static class SingletonHolder {
3 private static final Singleton INSTANCE = new Singleton(); 4 }
5 private Singleton (){}
6 public static final Singleton getInstance() { 7 return SingletonHolder.INSTANCE; 8 } 9 }
Ò²ÊÇÓÃÀà¼ÓÔØ»úÖÆÀ´±£Ö¤³õʼ»¯Ê±Ö»ÓÃÒ»¸öỊ̈߳¬µ«ÊǺô¦ÊÇSingleTon±»¼ÓÔØÁË£¬ÊµÀý²»Ò»¶¨±»´©¼þ£¬Ö»Óõ÷ÓÃgetInstance()·½·¨Ê±£¬²Å»áÏÔʾµÄ¼ÓÔØSingletonHolder£¬´Ó¶øÊµÀý»¯Singleton. µÚÎåÖÖ·½Ê½£¬Ã¶¾Ù
1 public enum Singleton { 2 INSTANCE;
3 public void method() { 4 } 5 }
ºÚÂí³ÌÐòÔ±¼ÃÄÏÖÐÐÄ ±àÖø
µÚÁùÖÖ£¬Ë«ÖؼìУ 01 public class Singleton {
02 private volatile static Singleton singleton; 03 private Singleton (){}
04 public static Singleton getSingleton() { 05 if (singleton == null) {
06 synchronized (Singleton.class) { 07 if (singleton == null) {
08 singleton = new Singleton(); 09 } 10 } 11 }
12 return singleton; 13 } 14 }
ºÚÂí³ÌÐòÔ±¼ÃÄÏÖÐÐÄ ±àÖø