public class test{
public static void main(String[]args)
{
//可用位置
List<Integer> available =new ArrayList<Integer>();
available.add(1);
available.add(2);
available.add(3);
available.add(4);
available.add(5);
available.add(6);
available.add(7);
//顾客位置
List<Integer> seats1=new ArrayList<Integer>();
seats1.add(1);
seats1.add(2);
List<Integer> seats2=new ArrayList<Integer>();
seats2.add(4);
seats2.add(5);
seats2.add(6);
Cinema c=new Cinema(available,"happy");
new Thread(new customer(c,seats1),"me").start();
new Thread(new customer(c,seats2),"she").start();
}
}
class Cinema{
List<Integer> available; //可用位置
String name;
public Cinema(List<Integer> available,String name)
{
this.available=available;
this.name=name;
}
public boolean bookticks(List<Integer> seats)
{
System.out.println("可用位置:"+available);
List<Integer> copy=new ArrayList<Integer>();
copy.addAll(available);
//去掉两个容器相同的元素
copy.removeAll(seats);
//判断是否选位置成功
if(available.size()-copy.size()!=seats.size())
{
return false;
}
else
{
available=copy;
}
return true;
}
}
class customer implements Runnable{
Cinema cinema; //哪个影院
List<Integer>seats; //多少个位置
public customer(Cinema cinema,List<Integer> seats)
{
this.cinema=cinema;
this.seats=seats;
}
public void run()
{
synchronized(cinema) { //锁影院
boolean flag=cinema.bookticks(seats);
if(flag)
{
System.out.println("出票成功"+Thread.currentThread().getName()+"位置:"+seats);
}else
{
System.out.println("出票失败"+Thread.currentThread().getName()+"位置不够");
}
}
}
}
java 多线程-快乐订座电影院
原创wx5d21d5e6e5ab1 ©著作权
©著作权归作者所有:来自51CTO博客作者wx5d21d5e6e5ab1的原创作品,请联系作者获取转载授权,否则将追究法律责任
下一篇:java 多线程-快乐火车票
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
【Canvas与艺术】模拟八一电影制片厂电影片头效果
使用Html5/Canvas 模拟八一电影制片厂片头
Canvas 八一厂 片头 -
SSM电影院购票系统
这个假期中,博主完成了一个SSM框架开发的电影院购票系统,界面上博主使用的是猫眼电影购票,以下是关于系统用户登录注册用户需要先登录,才能使用本
java 开发语言 后端 html+css+js spring