不应该是执行完第一个线程以后,三个线程有同样的执行机会吗,而不是永远执行一个

解决方案 »

  1.   

    你使用了synchronized同步锁导致的,由于你三个线程持有的都是同一把锁,首先拿到这把锁的线程一直执行到条件不满足推出循环,
    你把锁去掉后就是三个线程都可以进行工作了
      

  2.   

    第一个线程获取同步琐, 其他线程等待执行 ,  执行时候输出时候  ticketsNum --  数字减1 , 所有线程都共享s对象里的 ticketsNum .所以其他对象执行的时候ticketsNum 已经是flag=false了
      

  3.   

    非静态方法前用synchronized修饰,锁的是类的实例。