在不加同步的前提下为什么会出现两个10,这是神马情况。

解决方案 »

  1.   

    简单的成员属性读写虽然很快,但是程序刚启动的时候,可能还是会出现同时读取的现象。可以想象成百米赛跑的人,在start之前,都在同一个起跑线上,刚刚起跑时,可能运动员都在一条线上跑的。
      

  2.   

    这也是线程同步问题。
    多运行几次结果就不一样了。
    两个10的原因:以下是猜测
    因为cpu会在线程间来回快速的切换。获得cpu的线程才会执行。
    Thread-1  10:d1先执行到输出,当d1输出完还来不及ticket--时,cpu就让给d了。
    Thread-0  10:d执行到输出,还没ticket--cpu又回到d1了
    后边要是闲的蛋疼的话,自己猜吧
      

  3.   

    你把ticket--拿出来单独写一行再运行看看
      

  4.   

    线程同步问题,没加锁导致的,同时访问了一个变量ticket