当前位置: 首页 > news >正文

java多线程模拟多个售票员从同一个票池售票

程序功能

这段代码模拟了多个售票员从一个有限的票池中售票的过程。主要功能如下:
票池共有50张票,多个售票员(线程)并发进行售票。
使用同步机制确保线程安全,避免多个售票员同时出售同一张票。
每个售票员不断检查票池是否有票,有票则售出一张,直到票池中的票售完为止。
在这里插入图片描述

代码

class TicketSeller implements Runnable {// 票池中的剩余票数private static int tickets = 50;// 模拟售票方法@Overridepublic void run() {while (true) {// 同步代码块,保证多个线程安全操作票池synchronized (TicketSeller.class) {if (tickets > 0) {// 模拟售票过程System.out.println(Thread.currentThread().getName() + " 正在售出第 " + tickets + " 张票");tickets--;// 模拟售票需要一些时间try {Thread.sleep(100); // 休眠 100 毫秒} catch (InterruptedException e) {e.printStackTrace();}} else {// 如果票卖完了,退出售票System.out.println(Thread.currentThread().getName() + ":票已售罄");break;}}}}public static void main(String[] args) {// 创建三个售票员线程Thread seller1 = new Thread(new TicketSeller(), "售票员1");Thread seller2 = new Thread(new TicketSeller(), "售票员2");Thread seller3 = new Thread(new TicketSeller(), "售票员3");// 启动售票员线程seller1.start();seller2.start();seller3.start();}
}

http://www.mrgr.cn/news/29041.html

相关文章:

  • 特殊类的设计与类型转换
  • ‍ 猫头虎 分享:Python库 Pandas 的简介、安装、用法详解入门教程
  • 【Windows】使用 WMI 获取系统版本信息
  • 网络安全-利用 Apache Mod CGI
  • LeetCode_sql_day26(184,1549,1532,1831)
  • Vue的使用
  • [go] 命令模式
  • 第159天:安全开发-Python-协议库爆破FTPSSHRedisSMTPMYSQL等
  • ArrayList的扩容机制
  • Redis 篇-初步了解 Redis 持久化、Redis 主从集群、Redis 哨兵集群、Redis 分片集群
  • java注解
  • c++概念
  • Linux进程等待 | 程序替换
  • mysql学习教程,从入门到精通,SQL 更新数据(UPDATE 语句)(17)
  • 右值生命周期的延长
  • linux gcc 静态库的简单介绍
  • 代码随想录打卡Day35
  • 计数服务怎么设计?
  • 【读书】原则
  • 牛客周赛 Round 60(A,B,C,D,E,F)