我只创建了一个对象,为何运行的时候会有两个第五张票出现?即便是把上面的tickets变量加上static也是同样的结果
源代码发我一下,多线程就是指多个对象对某个RUN方法多次调用。
还是直接将代码贴出来吧,你这样的问法别人真没有办法帮你。
线程同步问题吧。。。 最好贴个代码出来。
如果不想修改代码,也找不到错误,那么就在要执行逻辑代码之前去下重呗,虽然这样不合理。
加不加static与是否会发生多线程冲突无关,你需要在执行代码处加个锁防止多个线程同时调用一个对象
把源码弄出来看看,这样才有法给你看
据描述来推测,应该是你用多线程同时访问全局共享变量时,你没有作同步处理导致的数据不一致问题。建议你在访问这个变量的地方使用加锁处理,将代码放在同步代码块中,例如synchronized(某个类名.class){访问变量的代码}。
这问题问的,没图没代码怎么说?
你这个应该是线程同步问题。 一个很经典的例子: 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这个操作看成是只有一步的操作,
从而解决了上述问题。