如何保证多线程下的单例。
1多线程安全单例模式一(不使用同步锁).
1 1 public class Singleton { 2 2 private Singleton() 3 3 {} 4 4 private static Singleton singleton; 5 5 6 6 public static Singleton getInstance() 7 7 { 8 8 if(singleton ==null) 9 9 { 10 10 singleton =new Singleton(); 11 11 } 12 12 return singleton; 13 13 } 14 14 15 15 16 16 }View Code
2.多线程安全单例模式一(使用同步锁).
public class Singleton { private Singleton() {} private static Singleton singleton; //sychronized 同步 public static synchronized Singleton getInstance() { if(singleton ==null) { singleton =new Singleton(); } return singleton; } }
3.多线程安全单例模式一(使用双重同步锁).
public class Singleton { private static Singleton instance; private Singleton (){ } public static Singleton getInstance(){ //对获取实例的方法进行同步 if (instance == null){ synchronized(Singleton.class){ if (instance == null) instance = new Singleton(); } } return instance; } }