synchronized 问题

来源:13-12 JMM的应用

qq_雨声_2

2019-10-25

public class Singleton6 {
private volatile static Singleton6 instance;

private Singleton6(){
}

public  static Singleton6 getInstance() {
    if (instance == null) {
        synchronized (Singleton6.class){
            if(instance == null){
                instance = new Singleton6();
               
            }
        }
    }
    return instance;
}

}
synchronized 加在方法上就没有重排序的问题了吗,synchronized 不是可以防止重排序的吗?

写回答

1回答

悟空

2019-10-25

你想问的是加在方法上,会不会有重排序的问题?如果加在方法上,两个线程会串行获取单例,不会有问题的,但是效率稍低一些。

0
5
悟空
回复
darey2
加在代码块上,前面有第一层if帮忙把大部分需要同步的地方都挡住了
2020-04-20
共5条回复

线程八大核心+Java并发原理及企业级并发解决方案

完整的并发知识网络+丰富的工作内容分享+50余道并发高频面试题

2512 学习 · 939 问题

查看课程