欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

一个诡异的可见性问题

发布时间:2023/12/3 编程问答 64 豆豆
生活随笔 收集整理的这篇文章主要介绍了 一个诡异的可见性问题 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

转载自 一个诡异的"可见性"问题

之前介绍过可见性的特性,最近做测试的时候发现了一个很诡异的问题,下面看看这三个例子。


test1:



test1这个例子加了volatile,所以程序正确退出输出test1 end


test2:



test2这个例子没有加volatile,程序也正常退出并输出一堆0并输出了test2 end,这是为什么呢?没有加volatile为什么也有可见性?看起来是很诡异的问题,问题是在while里面加了一行System..输出问题,打开源码看println方法里面加了synchronized同步块,正是因为这个同步块保证了里面变量x的可见性,这个诡异的问题也就解开了。



test3:



test3这个例子即没加volatile,也没有在while里面加System..输出语句,所以线程对变量n3的修改对主线程不可见,程序一直循环,没有输出结果。



总结

以上是生活随笔为你收集整理的一个诡异的可见性问题的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。