java多线程解决售票、退票问题

利用java语言的多线程能力,编写一个模拟4个窗口卖票和退票的程序,功能要求如下:
1)可实现三个窗口同时卖票(只负责卖票不能退票),各窗口所卖出的票号不能冲突
2)剩余的第四个窗口只负责退票,可随机对已经卖出的某张票进行退票(已被退票还未被再次卖出的票不能退票),此窗口累计最多能退回5张票
3) 被退回的票还可以继续被卖出
4)每个窗口的功能通过一个线程实现,每次卖出或退回一张票后要休眠1000毫秒
5)各窗口卖出和退回的票号要显示到屏幕上,以方便地了解某张票由那个窗口卖出或者退票
6)可卖出的有效票号为1…100

class TicketThread implements Runnable {private int flag = 1;private int tickets = 100;Object obj = new Object();@Overridepublic void run() {while(true) {try {SaleTickets();} catch (InterruptedException e) {e.printStackTrace();}}}public synchronized void SaleTickets() throws InterruptedException {if(tickets > 0) {if(Thread.currentThread().getName().equals("窗口4") && Math.random() > 0.5 && tickets < 100) {tickets++;flag ++;System.out.println("窗口4退票第" + tickets + "张票");if(flag > 5) {    //此窗口累计最多能退回5张票this.wait();  //退票完成后,让此线程休眠}}else {System.out.println(Thread.currentThread().getName()+ "正在售卖第" + tickets + "张票");tickets--;}Thread.sleep(1000);}}
}public class Tickets {public static void main(String[] args) {//创建线程对象TicketThread tt = new TicketThread();Thread t = new Thread(tt);t.setName("窗口1");Thread t2 = new Thread(tt);t2.setName("窗口2");Thread t3 = new Thread(tt);t3.setName("窗口3");Thread t4 = new Thread(tt);t4.setName("窗口4");//启动线程对象t.start();t2.start();t3.start();t4.start();}
}

下面是执行结果

Java 模拟电影院售票及退票相关推荐

  1. springboot基于Java的电影院售票与管理系统毕业设计源码011449

    电影院售票与管理系统的设计与实现 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克 ...

  2. Java项目:电影院售票管理系统(java+Servlet+JSP+JDBC+Mysql)

    源码获取:俺的博客首页 "资源" 里下载! 项目介绍 这个项目是一个基于Servlet+JSP的电影院售票系统,分为管理员和会员两种角色. 管理员权限包括: 修改登录密码 电影类别 ...

  3. java 模拟火车站售票系统_模拟售票系统java编程

    模拟售票系统java编程 /* 项目:用多线程设计一个模拟火车站售票大厅的工作情形. 问题描述:火车站有许多售票窗口,有些开放,有些不开放.顾客进入火车站售票厅后,到某个售票窗口排队等候,排到了就办理 ...

  4. Java模拟电影院购票系统

    目录 项目目录结构 项目功能: 首页功能 用户功能 商家功能 源码即各功能实现原理简述: 1.项目结构 2.准备工作 3.主要功能介绍 1.展示主页面 2.登录功能 3.展示客户功能页面 4.客户功能 ...

  5. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java在线电影院售票系统5u8st

    大学计算机专业毕业的,实际上到了毕业的时候,基本属于会与不会之间.说会,是因为学了整套的理论和方法,就是所谓的科班出身.说不会,是因为实践能力极差. 不会的问题,集中体现在毕设的时候,系统不会设计,程 ...

  6. 6-4 多线程编程:使用多线程同步与通信,模拟实现售票系统的售票和退票过程。 (20 分)

    使用synchronized实现同步控制,并使用wait()和notify()实现线程之间的通信. 编程要求如下: 可售出票的数量为一个固定值(total),从键盘读入.当余票的数量足够出售时(余票数 ...

  7. java电影院购票系统概况_电影院售票管理系统

    之前帮学弟做了一个毕设,电影院售票管理系统,仿的是淘票票,开发语言是java,需要的同学可以看一下原地址,电影院售票管理系统, 环境如下: 运行环境:java8.mysql5.6 开发语言:java ...

  8. JAVA电影院售票网站计算机毕业设计Mybatis+系统+数据库+调试部署

    JAVA电影院售票网站计算机毕业设计Mybatis+系统+数据库+调试部署 JAVA电影院售票网站计算机毕业设计Mybatis+系统+数据库+调试部署 本源码技术栈: 项目架构:B/S架构 开发语言: ...

  9. java 影院售票系统_java电影院售票系统

    [实例简介] 有简单界面的电影院售票系统,功能有用XML存储电影资源,把已售的电影票信息保存到txt文件中,再以电影票的形式打印到txt文件中. [实例截图] [核心代码] saletickt_sys ...

  10. 基于javaweb的电影院售票管理系统(java+servlet+jsp+jdbc+mysql)

    基于javaweb的电影院售票管理系统(java+servlet+jsp+jdbc+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/my ...

最新文章

  1. c++ include 路径_头文件中,#include使用引号“”和尖括号lt;gt;有什么区别?
  2. 【jQuery】如何用jQuery实现鼠标移入后改变背景颜色
  3. 【Android 安全】使用 360 加固宝加固应用 ( 购买高级加固服务 | 设置资源加固 | 设置 SO 文件保护配置 | 设置 SO 防盗用文件配置 | 反编译验证加固效果 )
  4. 【转载】Java 性能优化之String
  5. 随机产生13个0~51不同的随机数 -思想(定义参考系)
  6. 论文密级_2019年毕业研究生论文提交的通知
  7. C语言计算1+1/2+1/3+......+1/100
  8. PHP基础--PDO的常用操作
  9. 苹果公布 macOS Monterey 兼容机型列表
  10. Zoj 3511 线段树
  11. android 隐藏桌面图标
  12. Error: could not open `C:\Program Files\Java\jre6\lib\amd64\jvm.cfg' 解决办法
  13. Springboot URL Rewrite
  14. 基于RNN生成古诗词
  15. Android 计时器
  16. 盘点好用的 Markdown 编辑器
  17. 计算机英语背诵发音,英语背诵十大技巧,简直不要太实用
  18. rust新版组队指令_腐蚀rust新版服务器指令大全 腐蚀指令一览
  19. Linux服务器批量管理工具 - TeamRemote
  20. 斗破苍穹java_安卓斗破苍穹游戏源码

热门文章

  1. mysql sum total,从MySQL数据库获取Java中的Sum(total)
  2. 使用搜索引擎的一些技巧
  3. 【夜莺监控】从日志中提取指标的瑞士军刀
  4. 期权合约的几个影响因素
  5. 求助帖 就是它()=Compaq Visual Fortran
  6. hdu5971 Wrestling Match(染色法判二分) 2016ACM/ICPC亚洲区大连站
  7. 上海华为OD招聘 部门直招 有问必答
  8. python django mysql安装_Python的开发环境安装(MySQL、Django、PyCharm)
  9. 奥运门票网站瘫痪给了我很深刻的启示……
  10. 【Python学习笔记】语法初识