-
Notifications
You must be signed in to change notification settings - Fork 686
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
单例模式里面第一版DCL代码中的注释不太对 #12
Comments
对啊,所以才需要双重检查 |
‘ 双重检查存在的一样在于可能会有多个线程进入第一个判断,然后竞争同步锁,线程A得到了同步锁,创建了一个Singleton实例,赋值给instance,然后释放同步锁,此时线程B获得同步锁,又会创建一个Singleton实例,造成初始化覆盖。 ’ |
我的注释: 你的回复: 我觉得注释是没有错的,你说的线程B可以看到instance!=null不代表就线程B不会再执行
方法了,所以为了避免线程B再次执行一次初始化,所以synchronized修饰的语句块再加了一个if判断,你觉得有问题我们可以继续探讨,项目主页有技术群的二维码和我的微信 |
被synchronized修饰的语句块有Happens-Before规则,线程B在线程A之后进入同步块一定可以看到instance!=null
The text was updated successfully, but these errors were encountered: