开发者社区 问答 正文

java中简单的线程问题

我只创建了一个对象,为何运行的时候会有两个第五张票出现?即便是把上面的tickets变量加上static也是同样的结果

展开
收起
蛮大人123 2016-05-31 11:30:13 2060 分享 版权
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    你这个应该是线程同步问题。 一个很经典的例子: a+=1 这个其实是三个动作:1.先从内存中取得a的值 2.执行a+1 3.将a+1的结果再赋值给a
    多线程其实是不可控制的,当a=4 的时候, 线程1执行完a+1后还没将结果赋值给a 此时线程2 去读取a的值又再次执行a+1 那么此时两个线程的结果也就都是5了。 解决该问题可以通过加锁或者原子操作进行。 比如 synchronize(object){ a+=1;} 这样就可以把a+=1这个操作看成是只有一步的操作,
    从而解决了上述问题。

    2019-07-17 19:21:41
    赞同 展开评论
问答分类:
问答标签:
问答地址: