弊端:多个线程需要判断锁,较为消耗资源。
*/
class Ticket implements Runnable//extends Thread
{ //private static int tick = 100; private int tick = 100; Object obj = new Object(); public void run() { while (true) { synchronized(obj) { if(tick>0) { try{Thread.sleep(10);}catch(Exception e){} System.out.println(Thread.currentThread().getName()+"...sale:"+tick--); } } }
}
}
class TicketDemo2
{ public static void main(String[] args) { /* Ticket t1 = new Ticket(); //Ticket t2 = new Ticket(); //Ticket t3 = new Ticket(); //Ticket t4 = new Ticket();
Ticket t = new Ticket(); Thread t1 = new Thread(t);//创建了一个线程。 Thread t2 = new Thread(t);//创建了一个线程。 Thread t3 = new Thread(t);//创建了一个线程。 Thread t4 = new Thread(t);//创建了一个线程。