孙鑫JAVA多线程视频BUG
的有关信息介绍如下:这就是线程不同步导致的,加个线程同步就行了,后面的教程应该会说,没就只好你自己去看线程同步的相关内容了 :改了一下,同步了就不会出现这种情况了:public class TicketsSystem{ public TicketsSystem() { new SellThread(); } public static void main(String[] args){ new TicketsSystem(); }} class SellThread implements Runnable{ int tickets=100; public SellThread() { try{ new Thread(this).start(); new Thread(this).start(); new Thread(this).start(); new Thread(this).start(); }catch(Exception e) { e.printStackTrace(); } } private synchronized void sale() { if(tickets>0) { System.out.println(Thread.currentThread().getName()+"sell tickets:"+tickets); tickets--; try { Thread.sleep(200); }catch(Exception e) { e.printStackTrace(); } } } public void run(){ while(tickets>0) { sale(); } } }