懒汉模式和饿汉模式:
public class Demo {
//private static Single single =
new Single();
//饿汉模式
private static Single single2 =
null;
//饿汉模式
public Demo() {
if (single2 ==
null) {//1
single2 =
new Single();//2
}
}
}
在多线程环境下,代码1和代码2之间,这里会有线程安全问题,线程A和线程B同时到代码1和代码2之间,两个线程同时创建两个对象,这不符合单例模式;
解决方案:
可用双重检查锁来实现
以下是双重检查锁的代码:
public class Demo {
private static Single single2 =
null;
//饿汉模式
public Demo() {
if (single2 ==
null) {
synchronized (Demo.
class) {
if (single2 ==
null) {
single2 =
new Single();
}
}
}
}
}
转载请注明原文地址: https://mac.8miu.com/read-505695.html