单例模式

 1 public class Singleton
 2 {
 3          private static Singleton singleton = new Singleton();//类加载了便初始化该单例对象
 4                                                                                                                                    //之所以称之为饿汉式,因为他太急了
 5          private Singleton()
 6          {
 7          }
 8          public static Singleton getInstance()
 9          {
10                    return singleton;
11          }
12 }
 1 public class Singleton
 2 {
 3          private static Singleton singleton;
 4  
 5          private Singleton()
 6          {
 7          }
 8          //注意这里synchronized,保证了线程安全,意思就是每次只有一个线程能够访问该方法
 9          public static synchronized Singleton getInstance()
10          {
11                    if(singleton == null)
12                    {//当singleton要用的时候才初始化,加判断避免重复初始化,保证只new了一次
13                             singleton= new Singleton();
14                    }
15                    return singleton;
16          }
17 }
 1 public class Singleton
 2 {
 3          private static Singleton instance = null;
 4  
 5          private Singleton()
 6          {
 7                    //dosomething
 8          }
 9  
10          public static Singleton getInstance()
11          {
12                    if(instance == null)
13                    {
14                             synchronized(Singleton.class)//可以思考一下,为什么这样提高效率
15                             {
16                                      if(null == instance)
17                                      {
18                                                instance= new Singleton();
19                                      }
20                             }
21                    }
22                    return instance;
23          }
24 }
原文地址:https://www.cnblogs.com/friends-wf/p/3970842.html