请稍等 ...
×

采纳答案成功!

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

打印奇偶数代码会不会线程安全问题?

感觉上,while不在同不代码块里,会不会出现静态变量 count脏读?比如一个线程加了,但是另一个线程比较的是没有加的数据,导致多加了一遍

正在回答

1回答

悟空 2019-11-12 20:55:49

放到synchronized里面或者加volatile来保证可见性。

0 回复 有任何疑惑可以回复我~
  • 提问者 he_mao #1
    synchronized可以,volatile可见但是不是原子性,如果对++进行同步代码块,保证++会写成功,就可以原子性了,直接修改volatile读写是原子性,但是++不能保证,是这样吗?这是以前自己的理解,所以我在多线程批量记账一般会用atomic包去做批次检验
    回复 有任何疑惑可以回复我~ 2019-11-13 09:12:25
  • 悟空 回复 提问者 he_mao #2
    “volatile可见但是不是原子性,如果对++进行同步代码块,保证++会写成功,就可以原子性了,直接修改volatile读写是原子性,但是++不能保证”
    是这样的,关于volatile的性质在后面章节中有详细介绍。
    回复 有任何疑惑可以回复我~ 2019-11-13 09:53:13
  • 提问者 he_mao 回复 悟空 #3
    感谢老师,看了前面的课,感觉对于多线程的知识自己了解的太零散了,只停留在业务的基础运用,继续学习~~~~~~~
    回复 有任何疑惑可以回复我~ 2019-11-13 10:37:08
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信