cai772088996
2015-12-21 07:20
采纳率: 84.7%
浏览 2.0k
已采纳

JAVA中线程同步的问题

图片说明

图片说明

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • 已采纳

    你的num是类自己的成员变量,对于每一个对象都有属于自己的num,除非你加上static

    点赞 评论
  • 思想在飞肢体在追 2015-12-21 07:35

    可以试着使用实现Runable接口试试

    点赞 评论
  • Robot-S 2015-12-21 07:38

    答案就在这里:关于Java中线程同步的问题
    ----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

    点赞 评论
  • 月苍 2015-12-21 07:46
    点赞 评论
  • 米玖 2015-12-21 08:57

    改为 synchronized(num) 即可!

    点赞 评论
  • 毕小宝 2015-12-21 09:18

    将while循环体放在同步代码块中。
    这个问题产生的原因分析:是多个线程同时访问num 变量时,当两个线程同时读取到相同的某个值100时,只能有一个线程1先获取锁而执行代码块,另一个线程2等待锁释放后继续执行,但使用的值确是最初读到的值,而非线程1操作后的值。
    此处加锁应将所有对共享变量的访问都放在同步代码块中,才能保证同一时刻只能有一个持有锁并操作该共享变量,才能保证其他线程获取到最新的数据。

    点赞 评论

相关推荐 更多相似问题