某电影院正在卖票,共有一百张票,有三个窗口同时卖票,每次出票时间需要100ms,请设计一个程序模拟该电影院卖票
public class SellTicket implements Runnable {
private int tickets=100;
private Object o=new Object();
@Override
public void run() {
while(true) {
synchronized(o) {//同步代码块,防止出现数据安全问题,也可以采用同步方法或同步静态方法
if(tickets>0) {
System.out.println(Thread.currentThread().getName()+"正在卖倒数第"+tickets+"张票");
tickets--;
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
}
}
}
public class TicketDemo {
public static void main(String[] args) {
SellTicket s=new SellTicket();//创建实现了Runnable接口的类的对象
Thread t1=new Thread(s,"一号窗口");//创建Thread类的对象,把实现了Runnable接口的类的对象作为构造方法的参数,并起名
Thread t2=new Thread(s,"二号窗口");
Thread t3=new Thread(s,"三号窗口");
t1.start();//启动线程
t2.start();
t3.start();
}
}