欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 艺术 > java多线程模拟多个售票员从同一个票池售票

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

2025/2/23 19:38:27 来源:https://blog.csdn.net/C7211BA/article/details/142320404  浏览:    关键词: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();}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词