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

程序功能

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

代码

class TicketSeller implements Runnable {
    // 票池中的剩余票数
    private static int tickets = 50;

    // 模拟售票方法
    @Override
    public 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.mfbz.cn/a/879147.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

51单片机 - DS18B20实验1-读取温度

上来一张图,明确思路,程序整体裤架如下,通过单总线,单独封装一个.c文件用于单总线的操作,其实,我们可以把点c文件看成一个类操作,其属性就是我们面向对象的函数,也叫方法&#xff0c…

软考中级软件设计师——数据结构与算法基础学习笔记

软考中级软件设计师——数据结构与算法基本概念 什么是数据数据元素、数据项数据结构逻辑结构物理结构(存储结构) 算法什么是算法五个特性算法效率的度量时间复杂度空间复杂度 什么是数据 数据是信息的载体,是描述客观事物属性的数、字符及所…

【算法】队列与BFS

【ps】本篇有 4 道 leetcode OJ。 目录 一、算法简介 二、相关例题 1)N 叉树的层序遍历 .1- 题目解析 .2- 代码编写 2)二叉树的锯齿形层序遍历 .1- 题目解析 .2- 代码编写 3)二叉树最大宽度 .1- 题目解析 .2- 代码编写 4&#xf…

自养号测评:如何在敦煌网打造爆款与提升店铺权重

敦煌网自养号测评是敦煌网卖家为了提升店铺权重、流量及销量而采取的一种策略。自养号测评指的是卖家自行注册并管理买家账号,通过模拟真实买家行为,为自家店铺进行测评、补单等操作。以下是对敦煌网自养号测评的详细解析: 一、自养号测评的…

Text-to-SQL技术升级 - 阿里云OpenSearch-SQL在BIRD榜单夺冠方法

Text-to-SQL技术升级 - 阿里云OpenSearch-SQL在BIRD榜单夺冠方法 Text-to-SQL 任务旨在将自然语言查询转换为结构化查询语言(SQL),从而使非专业用户能够便捷地访问和操作数据库。近期,阿里云的 OpenSearch 引擎凭借其一致性对齐技术,在当前极具影响力的 Text-to-SQL 任务…

3.接口测试的基础/接口关联(Jmeter工具/场景一:我一个人负责所有的接口,项目规模不大)

一、Jmeter接口测试实战 1.场景一:我一个人负责所有的接口:项目规模不大 http:80 https:443 接口文档一般是开发给的,如果没有那就需要抓包。 请求默认值: 2.请求: 请求方式:get,post 请求路径 请求参数 查询字符串参数…

马匹行为识别系统源码分享

马匹行为识别检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

【自动驾驶】决策规划算法 | 数学基础(三)直角坐标与自然坐标转换Ⅱ

写在前面: 🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝 个人主页:清流君_CSDN博客,期待与您一同探索 移动机器人 领域的无限可能。 🔍 本文系 清流君 原创之作&…

UE5源码Windows编译、运行

官方文档 Welcome To Unreal Engine 5 Early Access Learn what to expect from the UE5 Early Access program. 链接如下:https://docs.unrealengine.com/5.0/en-US/Welcome/#gettingue5earlyaccessfromgithub Step 0:找到UE5源码 直接先上链接 https…

5.内容创作的未来:ChatGPT如何辅助写作(5/10)

引言 在信息爆炸的时代,内容创作已成为连接品牌与受众、传递信息与知识、以及塑造文化与观念的重要手段。随着数字媒体的兴起,内容创作的需求日益增长,对创作者的写作速度和质量提出了更高的要求。人工智能(AI)技术的…

旧衣回收小程序:开启旧衣回收新体验

随着社会的大众对环保的关注度越来越高,旧衣物回收市场迎来了快速发展时期。在数字化发展当下,旧衣回收行业也迎来了新的模式----互联网旧衣回收小程序,旨在为大众提供更加便捷、简单、透明的旧衣物回收方式,通过手机直接下单&…

在线包装盒型生成工具,各种异型包装盒型,PDF导出方便

1、templatemaker.nl Passepartout ✂ Templatemaker ︎https://www.templatemaker.nl/en/passepartout/这是一个荷兰设计师建的一个在线盒型自动生成工具,包含各类新奇盒型,大家可以一起去观摩一下。 网站首页顶部各种盒型展示,大家根据需…

开源|一个很强大的离线IP地址定位库和IP定位数据管理框架,支持亿级别的数据段

开源|一个很强大的离线IP地址定位库和IP定位数据管理框架,支持亿级别的数据段 不太会写-9527 卓越云阶 2024年09月18日 12:35 贵州 随着互联网技术的飞速发展,IP地址定位已成为许多应用程序中不可或缺的一部分。然而,现有的许多定位库在处理…

刻意练习:舒尔特方格提升专注力

1.功能描述 刻意练习:舒尔特方格提升专注力 如果发现自己存在不够专注的问题,可以通过一个小游戏来提升自己专注力--舒尔特方格。 舒尔特方格的实施步骤如下: 一张纸上画出5X5的空方格。在方格中,没有任何规律的随机填写数字1…

LeetCode_sql_day24(1212.查询球队积分)

描述 表: Teams ------------------------- | Column Name | Type | ------------------------- | team_id | int | | team_name | varchar | ------------------------- team_id 是该表具有唯一值的列。 表中的每一行都代表一支独立足球队。表: Matches…

VSCode扩展连接虚拟机MySQL数据库

在虚拟机安装MySQL vscode通过ssh远程登录Ubuntu 在vscode终端运行以下命令。 sudo apt-get install mysql-server-5.7 用以下命令确认MySQL是否安装完成。 sudo mysql MySQL安装成功。 在VSCode安装SQL扩展 扩展名:MySQL Shell for VS Code。 安装完成后&am…

我的AI工具箱Tauri版-VideoMusicCheckpointLouver音乐卡点百叶窗视频制作

本教程基于自研的AI工具箱Tauri版进行VideoMusicCheckpointLouver音乐卡点百叶窗视频制作。 视频样片《队长小翼》《沖田浩之-燃えてヒーロー》百叶窗卡点视频 《队长小翼》《沖田浩之-燃えてヒーロー》百叶窗卡点视频 该模块没有任何消耗。需要提前准备好响应的素材 该模块没…

ESP8266做httpServer提示Header fields are too long for server to interpret

CONFIG_HTTP_BUF_SIZE512 CONFIG_HTTPD_MAX_REQ_HDR_LEN1024 CONFIG_HTTPD_MAX_URI_LEN512CONFIG_HTTPD_MAX_REQ_HDR_LEN由512改为1024

Idea 中的一些配置

配置 javap jdk 自带的 javap 可以用来查看字节码信息。 配置过程: 打开设置,定位到 Tools,External Tools新建项,Program 中填 javap 的路径Argument 中填 -c $FileClass$Working directory 中填 $OutputPath$ Argument 中也…

2024/9/17 pytorch-卷积神经网络

一、torch.nn pytorch有很多接口,其中的torch.nn可以让我们方便的调用以便生成神经网络各层 1.torch.nn.Module 是一个构成神经网络层的一个基本类别,一般生成一个类别来继承nn.module torch.tensor(a)将a初始化为一个tensor类型数据 一般这种已经固…