public class ThreadSafeSingleton {
/**
*volatile 具有synchronized的可见特性,
*也就是说线程能够自动发现volatitle修饰属性的最新值
*/
private volatile static ThreadSafeSingleton instance = null;
private ThreadSafeSingleton() {
}
public ThreadSafeSingleton getInstance() {
if (instance == null) {
synchronized (ThreadSafeSingleton.class) {
instance = new ThreadSafeSingleton();
}
}
return instance;
}
}
另外一种写法
public class LazyLoadedSingelton {
private LazyLoadedSingelton() {
}
private static class LazyHolder {
private final static LazyLoadedSingelton instance = new LazyLoadedSingelton();
}
public static LazyLoadedSingelton getInstance() {
return LazyHolder.instance;
}
}
本文介绍了两种实现线程安全单例模式的方法:双重检查锁定和静态内部类。双重检查锁定利用 volatile 关键字确保实例的可见性和有序性,而静态内部类方式则通过类加载机制来保证线程安全性。
1754

被折叠的 条评论
为什么被折叠?



