您的位置:首页 > 其它

双重检查加锁机制--解决线程安全

2016-03-07 21:10 197 查看
双重检查加锁机制,指的是;并不是每次进入getInstance方法都需要同步,而是先不同步,进入方法过后,先检查实例是否存在,如果实例不存在才进入下面的同步锁,这是第一重检查。进入同步块后,再次检查实例是否存在,如果不存在就在同步快中创建一个实例。这样,只需同步一次,从而减少了同步情况下进行判断浪费的时间。

package singleton;

public class Test {
private volatile static Test instance = null;
private Test(){}
public static Test getInstance(){
//先检查实例是否存在,如果不存在才进入下面的同步块
if(instance == null){
//同步块,线程安全的创建实例
synchronized(Test.class){
//再次检查实例是否存在,如果不存在创建实例
if(instance==null){
instance = new Test();
}
}
}
return instance;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息