请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

double-check单例 为啥要加volatile

这个地方一直没想明白老师,不是synchronized也能保证可见性吗,就是说下一个线程进来之后能看到之前的操作,就是说下一个线程进来,之前synchronized不应该完全执行完了吗,为啥不加volatile还会出现对象泄漏的问题呢?

正在回答 回答被采纳积分+3

2回答

悟空 2021-03-05 14:45:34

你的理解是对的,但是还有一种情况:在上一个线程退出synchronized代码块之前,下一个线程就进来了,此时synchronized是不保证可见性的,就需要用到volatile了。

0 回复 有任何疑惑可以回复我~
  • 提问者 程序员Fisher #1
    还是有点懵老师,synchronized不是同时只能有一个线程来处理吗,不是一个线程结束,另一个线程才进来的吗
    回复 有任何疑惑可以回复我~ 2021-03-05 16:45:48
  • 悟空 回复 提问者 程序员Fisher #2
    很好的问题,小伙伴看看这里哈,看同学们的留言,之前解答过:http://coding.imooc.com/learn/questiondetail/142039.html
    回复 有任何疑惑可以回复我~ 2021-03-05 22:19:43
  • 意思是 执行完synchronized的代码块后,让出锁也是需要时间的,在这让出锁的空隙间下一个线程进来了?
    回复 有任何疑惑可以回复我~ 2021-03-09 15:12:50
提问者 程序员Fisher 2021-03-05 08:48:04

照这么理解饿汉模式的那种线程安全的写法 是不是也得加volatile,不太理解这个地方,求老师解答

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信