synchronized可见性问题

来源:10-5 找到错误2

佛系biu

2020-03-10

我的理解是,加了synchronized关键字,在执行某代码块的时候,会强制保持和jmm(主内存的通信),保证可见性,不加的话就不强制通信,造成数据的脏读等问题?对吗师兄?
还有一个疑惑哈,就是线程什么时候和主内存进行一次通信,是随机的吗?还是一行代码(操作共有资源后)写入,那么发生线程错误就是读写顺序出错的概率是很大的啊,对不对?

写回答

1回答

悟空

2020-03-10

不是执行某代码块的时候,会强制保持和jmm(主内存的通信),保证可见性,而是在退出synchronized代码块之后才去通信来保持一致。

这个在讲happens-before的时候讲了,你看看那个部分哈。

0
1
佛系biu
非常感谢!
2020-03-10
共1条回复

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

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

2512 学习 · 939 问题

查看课程