解决方案 »

  1.   

           你这个不应该是关while或者for循环的原因,while可能也会出问题的。
           你的四个线程都有用到ticket 这个变量,假设有一个线程分配到cpu执行,刚执行到for循环的i< ticket;这个判断或者while的 if(ticket > 0)这个判断,这时候这个线程分配的时间到了,有另外的线程执行,这两个线程用到的ticket这给变量的值是一样的就会,就会出现循环次数大于100的情况。
         你需要对你的sellTicket这个方法做出保护,你可以改方法加上synchronized关键字来保护。