double-check单例 为啥要加volatile

来源:13-12 JMM的应用

程序员Fisher

2021-03-05

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

写回答

2回答

悟空

2021-03-05

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

0
4
悟空
回复
移动客户端
不是,这里不涉及到出synchronized的代码块
2021-03-09
共4条回复

程序员Fisher

提问者

2021-03-05

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

0
0

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

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

2512 学习 · 939 问题

查看课程