package mypackage;/***电影院买票系统* 注意泛型和容器的使用,特别注意容器内一次性添加多个元素的方法Arrays.asList(1,2,3,4,5)* 注意线程同步问题的解决,特别要注意加锁的正确性*/import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;public class CinemaTicket {public static void main(String[] args) {//        创建剩余号码Set<Integer> available=new HashSet<Integer>(Arrays.asList(1,2,3,4,5));
//        创建顾客要买的号码Set<Integer> set1=new HashSet<Integer>(Arrays.asList(1));Set<Integer> set2=new HashSet<Integer>(Arrays.asList(2,3));Set<Integer> set3=new HashSet<Integer>(Arrays.asList(5,7));//        初始化并创建线程
//      之前因为不过审,这里改了名字Cinema cinema=new Cinema(available,"JAVA影院");Thread t1=new Thread(new Customers(cinema,set1),"小a");Thread t2=new Thread(new Customers(cinema,set2),"小c");Thread t3=new Thread(new Customers(cinema,set3),"小d");t1.start();t2.start();t3.start();}
}//创建影院类
class Cinema{//    剩余号码集合Set<Integer> available;
//    影院名字String name;
//    构造方法public Cinema(Set<Integer> available, String name) {this.available = available;this.name = name;}
}//顾客类,重写run方法
class Customers implements Runnable{Cinema cinema;
//    顾客要买的号码Set<Integer> sets;
//    构造方法public Customers(Cinema cinema, Set<Integer> sets) {this.cinema = cinema;this.sets = sets;}//    重写run方法@Overridepublic void run() {//        同步代码块,注意因为临界资源是电影的剩余票数,因此对象应该是cimemasynchronized (cinema){try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}//            先输入剩余可选号码System.out.print("可选位置"+cinema.available+",");
//            判断可选号码中是否包含所有的顾客要买的号码,如果为false,就结束if(!cinema.available.containsAll(sets)){System.out.println("很抱歉,"+Thread.currentThread().getName()+",你选的位置"+sets+"有不存在的,"+cinema.name+"期待您的下次光临!");return;}
//            如果我true,就将剩余可选号码删除顾客要买的号码cinema.available.removeAll(sets);System.out.println("恭喜您"+Thread.currentThread().getName()+",您选的位置"+sets+"成功,"+cinema.name+"期待您的到来!");}}
}

结果如下:

Python 每日一记210java模拟电影院买票相关推荐

  1. 使用多线程模拟电影院买票。

    模拟唐僧师徒4人买电影票.电影票10元一张,唐僧拿着一张50元的.孙悟空那和 猪八戒都拿着一张20的. 沙僧拿着一张10元的.此时售票员手中只有一个10元的. 模拟他们4个人买票. package c ...

  2. Python + selenium + requests实现12306全自动买票

    Python + selenium + requests实现12306全自动买票 2020.05.03更新: 下面是新的测试结果: 2021.03.28更新:谷歌浏览器升级导致之前的隐藏方法失效,更新 ...

  3. Java知识点26——模拟12306买票过程、模拟龟兔赛跑的过程、静态代理例子

    模拟12306买票过程 共享资源,并发(线程安全) Web12306.java /*** 共享资源,并发(线程安全)* @author Administrator**/ public class We ...

  4. java模拟多线程买票问题

    多线程买票是java中的一个经典案例,其主要思想无非包括2点,synchronized和锁,两者中,前者实现同步,后者为同步的线程提供锁,从而实现多个线程共享同一份资源时候,能够同步进行; 经典的方式 ...

  5. Java线程思想模拟电影院卖票

    需求: 某电影院目前正在上映国产大片,共有100张票,而它有3个窗口卖票,请设计一一个程序模拟该电影院卖票 思路:         ①定义一个类SellTicket实现Runnable接口, 里面定义 ...

  6. Java线程模仿电影院买票

    模拟唐僧师徒4人买电影票.电影票10元一张,唐僧拿着一张50元的.孙悟空那和 猪八戒都拿着一张20的. 沙僧拿着一张10元的.此时售票员手中只有一个10元的. 模拟他们4个人买票. package c ...

  7. 使用方式一 实现电影院买票 并且存在问题

    *需求:  * 电影院有3个窗口,同时出售100张票,使用多线程实现!  * 方式一 实现 继承Thread类  *   * 结果出现的问题  * 模拟真实场景:加入延时操作:  * 1)可能出现同票 ...

  8. java模拟火车站买票的过程_Java常用代理

    在我们通常的应用中,代理模式也是我们常用的设计模式之一.所谓的代理模式是指客户端并不直接调用实际的对象,而是通过调用代理对象,来间接的调用实际的对象. 为什么要采用这种间接的形式来调用对象呢?一般是因 ...

  9. Python每日一记60这一仗,华为必须赢,一定能赢!

    这篇文章和python无关----- 华为事件已经过去好多天,但是每每看到关于华为的文章,的确让人心潮澎湃. 能被一个超级大国这样对待,华为可谓是真强大,望华为以及国内的科技公司,加油. 这是一个大国 ...

最新文章

  1. 青少年软件编程等级考试 python-中国电子学会、北大等推出青少年软件编程等级标准升级版...
  2. Java 内存 关系_发生在Java内存模型中的关系之前
  3. 第 3-4 课:数据结构——队列详解 + 面试题
  4. Testlink1.9.5的安装配置
  5. 软考网络管理员学习笔记3之第三章网络体系结构
  6. PIC18F26K20
  7. leetcode题解53-最大子序和
  8. 转发 微博 Qzone 微信 基础知识|存储相关的名词
  9. Altium Designer中的长度单位如何转换?
  10. 安装VS2010旗舰版出错,返回错误码1603
  11. Centos 7 开机提示 Entering emergency mode 解决方法
  12. Elasticsearch系列——(1.2)倒排索引 的实现
  13. 双创项目_宫颈癌智能风险检测(3)
  14. 第三种最小生成树算法 Borůvka算法
  15. Theano简单入门(三)
  16. 强化学习原理及应用作业之动态规划算法【SYSU_2023SpringRL】
  17. 关于QQ号的分发管理机制的基本方案的设计猜想和分析讨论
  18. 操作系统_逻辑地址转换为物理地址
  19. MPU6050加速度传感器学习笔记之实验《获取原始数据》
  20. 构建 AWS AMI 镜像(EC2 Image Builder + Terraform)

热门文章

  1. android 云备份通讯录备份,安卓版QQ手机管家2.1全新发布:云备份通讯录
  2. 如何用迪米特法则(LOD)实现“高内聚、松耦合”?
  3. python中min(x)是什么意思,Python的min/max的C等价性是什么
  4. 征信不良记录,花钱就能修复?
  5. 【C语言基础】练习:结构体统计学生成绩,快递费用计算
  6. Vroid模型导入Unity
  7. Android S静态广播注册流程(广播2)
  8. STM32 Hal库移植到GD32上遇到的问题
  9. 谈谈我对Linux系统学习的历程回顾
  10. 使用CST 软件如何选配最佳的计算机硬件配置?