为了账号安全,请及时绑定邮箱和手机立即绑定

关于同步方法的问题

代码如图 

把需要同步的代码  封装到方法中  

两个线程为什么会打印相同的结果



http://img1.sycdn.imooc.com//5940fdd600016bd314190929.jpg

正在回答

1 回答

解释:当线程1将piao()方法调入栈中执行时,线程2也将piao()方法调入栈中执行,但是由于piao()方法被锁所以线程2处于等待,然而此时线程2已经读取了内存中的 x 的值,所以当线程1执行完成虽然修改了 x 的值,但是由于线程2已经读取了 x 的值,所以修改后的 x 的值并没有被线程2读取。

注意:1、可以给x添加volatile修饰符,这样线程就能读取正确的值

          2、一般情况下对于并发共享的类最好不要拥有状态,容易出现并发问题

1 回复 有任何疑惑可以回复我~
#1

慕粉9344391 提问者

非常感谢!
2017-06-18 回复 有任何疑惑可以回复我~
#2

慕UI1804229

添加了volatile还是没用啊
2018-06-21 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
深入浅出Java多线程
  • 参与学习       186084    人
  • 解答问题       464    个

带你一起深入浅出多线程,掌握基础,展望进阶路线

进入课程

关于同步方法的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信