1、线程同步的案例
需求:某电影院目前正在上映国产大片,共有100张票。而他有三个售票窗口,请设计一个程序模拟该影院售票
思路:
1 定义一个类SellTicket 实习Runnbale接口,定义一个成员变量 private int tickets = 100;
2 在SellTicket类中 重写run()。实现卖票:
A 判断票数是否大于0
B 售出票之后 票数减一
C票没有了,也可能还有人来问,所以这个地方使用死循环 让卖票行为一直持续
3 定义一个测试类,实现售票动作
A 创建SellTicket 类的对象
B 创建三个Thread类 对象,将SellTicket 类的对象传递给线程 并给线程命名
C 启动线程
public class SellTicket implements Runnable{
private int ticktes = 100;
@Override
public void run() {
while(true){
if(ticktes > 0 ){
System.out.println(Thread.currentThread().getName()+"正在出售第" + ticktes+"张票");
ticktes--;
}
}
}
}
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号窗口");
//启动线程
t1.start();
t2.start();
t3.start();
}
}
出现每个窗口销售各自的100张票,实际生活中 售票是需要时间的 ,因此我们售卖一张票的时间为100毫秒
public class SellTicket implements Runnable{
private int ticktes = 100;
@Override
public void run(