class tt { public static void main(String[] args) { Runnable st = new SellThread(); new Thread(st).start(); new Thread(st).start(); new Thread(st).start(); new Thread(st).start(); } } class SellThread implements Runnable { int tickets = 100; Object obj = new Object(); public void run() { while (true) { synchronized (obj) { if (tickets > 0) { System.out.println(Thread.currentThread().getName() + "sell tickets" + tickets); tickets--; } else { break; } } try { Thread.sleep(100); } catch (Exception e) { e.printStackTrace(); } } } }
比较适合初学者理解同步,程序中的线程数到底有几个的问题,我一直对这个没有一个透彻的理解,实际上Thread xx=new Thread() ;
xx.start() 只是启动了一个线程,不管run()方法中是不是有无限循环如while(true)。