//饿汉式 //多线程并发没问题
class Single{
private static final Single s = new Single();
private Single(){}
public static Single getInstance(){
return s;
}
}
//懒汉式
class Single {
private static Single s = null;
private Single() {
}
/*
* 并发访问忽悠安全隐患,所以加入同步机制解决安全问题。
* 但是,同步的出现降低了效率。
*
public static synchronized Single getInstance() {
if (s == null)
//-->0 -->1
s = new Single();
return s;
}
*/
//通过双重判断的方式,解决效率问题,减少判断锁的次数
public static Single getInstance() {
if(s == null) { //有一个对象后,其他线程就不能再读同步锁
synchronized (Single.class) {
if (s == null)
//-->0 -->1
s = new Single();
}
}
return s;
}
}
class Demo implements Runnable{
@Override
public void run() {
Single.getInstance();
}
}
单例模式的线程问题
最新推荐文章于 2024-07-25 13:59:31 发布