采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
我的理解是,加了synchronized关键字,在执行某代码块的时候,会强制保持和jmm(主内存的通信),保证可见性,不加的话就不强制通信,造成数据的脏读等问题?对吗师兄? 还有一个疑惑哈,就是线程什么时候和主内存进行一次通信,是随机的吗?还是一行代码(操作共有资源后)写入,那么发生线程错误就是读写顺序出错的概率是很大的啊,对不对?
不是执行某代码块的时候,会强制保持和jmm(主内存的通信),保证可见性,而是在退出synchronized代码块之后才去通信来保持一致。
这个在讲happens-before的时候讲了,你看看那个部分哈。
非常感谢!
登录后可查看更多问答,登录/注册
完整的并发知识网络+丰富的工作内容分享+50余道并发高频面试题
1.9k 26
890 12
1.1k 12
2.5k 12
1.1k 11