单例模式与volatile和synchronized关键字
看到一些讨论volatile用法的文章里面把单例模式的代码写成了如下的样子,
class Singleton {
private static volatile Singleton singleton;
private Singleton() {}
public static Singleton getInstance() {
if (singleton == null) {
synchronized (Singleton.class) {
if (singleton == null) {
singleton = new Singleton();
}
}
}
return singleton;
}
}
为什么这样写那?
把getInstance() 写成同步方法不就完事了吗???
public static synchronized Singleton getInstance() { ... }
兄弟们有什么想法,还请指教,谢谢。
class Singleton {
private static volatile Singleton singleton;
private Singleton() {}
public static Singleton getInstance() {
if (singleton == null) {
synchronized (Singleton.class) {
if (singleton == null) {
singleton = new Singleton();
}
}
}
return singleton;
}
}
为什么这样写那?
把getInstance() 写成同步方法不就完事了吗???
public static synchronized Singleton getInstance() { ... }
兄弟们有什么想法,还请指教,谢谢。
...全文
相关推荐
单例模式Singleton
为了兼顾性能和线程安全,可以使用双重检查锁定(Double-Check Locking):```javapublic class Singleton { private volatile static
懒汉单例模式解析[源码]
通过synchronized关键字、双重检查锁定或静态内部类等技术,可以有效地解决这一问题,而volatile关键字在双重检查锁定的场景中起到关键作用。
线程安全的单例模式
需要注意的是,这里使用了 `volatile` 关键字来确保可见性和禁止指令重排,进一步加强了线程安全性。
设计模式 之 “单例模式[Singleton Pattern]”
**双重检查锁定(Double-Check Locking)**:在懒汉式的优化版本中,加入了 volatile 和 synchronized 关键字,确保了线程安全和单例的正确初始化。
Java单例模式应用研究.pdf
#### 三、经典单例模式实现经典单例模式通常有两种实现方式:**饿汉式**和**懒汉式**。##### 1.


Java SE
