我只创建了一个对象,为何运行的时候会有两个第五张票出现?即便是把上面的tickets变量加上static也是同样的结果
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
你这个应该是线程同步问题。 一个很经典的例子: 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这个操作看成是只有一步的操作,
从而解决了上述问题。