需求:某电影院出售某些电影的票(复联3,红高粱....),有三个窗口同时进行售票(100张票),请您设计一个程序,模拟电影院售票
两种方式:
继承
接口
(1)synchronized实现
public class SellTicketDemo {public static void main(String[] args) {//创建资源类对象(共享资源类/目标对象) SellTicket st = new SellTicket() ; //创建线程类对象 Thread t1 = new Thread(st, "窗口1") ; Thread t2 = new Thread(st ,"窗口2") ; Thread t3 = new Thread(st, "窗口3") ; //启动线程 st1.start(); st2.start(); st3.start();}
}
public class SellTicket implements Runnable {//定义100张票private int tickets = 100 ;private Object obj = new Object() ;@Overridepublic void run() { while(true) { //new Object():锁对象 (门和关) //t1,t2,t3 synchronized(obj) {//t1进来,门一关,t2,t3进不来了 if(tickets>0) { try { //睡眠:延迟 Thread.sleep(100); } catch (InterruptedException e) {