火车票购买问题模拟-同步
一 购买火车票线程
package com.cyb.syn;
import java.util.List;
public class DespoitThread implements Runnable {
public List<String> listHcp;// 火车票资源
public DespoitThread(List<String> listHcp) {
this.listHcp = listHcp;
}
public void run() {
while (true) {
synchronized (listHcp) {
if (listHcp.size() == 0) {
try {
listHcp.wait();// 没有火车票则等待
} catch (InterruptedException e) {
e.printStackTrace();
}
}
listHcp.remove(0);
listHcp.notify();
System.out.println("成功购买一张火车票,剩余票数:" + listHcp.size());
break;//购买完成后,直接退出,让其他购买线程执行。
}
}
}
}
二 多人发起购买事件
public class MultiThread {
private List<String> container = new ArrayList<String>();
public final static int MAX = 3;
public static void main(String args[]) {
MultiThread m = new MultiThread();
m.container.add("p1");
m.container.add("p2");
m.container.add("p3");
m.container.add("p4");
m.container.add("p5");
m.container.add("p6");
m.container.add("p7");
m.container.add("p8");//一共八张火车票,现在开启100个线程,100个人购买。
for(int i =1 ;i<=100;i++){
System.out.println("第"+i+"个人准备购买火车票...");
new Thread(new DespoitThread(m.container)).start();
}
}
}
三 运行结果
第1个人准备购买火车票...
第2个人准备购买火车票...
成功购买一张火车票,剩余票数:7
成功购买一张火车票,剩余票数:6
第3个人准备购买火车票...
成功购买一张火车票,剩余票数:5
成功购买一张火车票,剩余票数:4
成功购买一张火车票,剩余票数:3
第4个人准备购买火车票...
成功购买一张火车票,剩余票数:2
成功购买一张火车票,剩余票数:1
成功购买一张火车票,剩余票数:0
第5个人准备购买火车票...
第6个人准备购买火车票...
第7个人准备购买火车票...
...
火车票购买问题模拟-同步相关推荐
- 【python 程序题:火车票购买程序】
火车票购买程序: 学生火车票优惠如下: 1.每年的1-3月和7-9月凭学生证可打5折. 2.10人(含10人)以上团购还可打9折. print("""学生火车票优惠如下: ...
- 铁道部:儿童火车票购买身高标准调高10厘米
铁道部:儿童火车票购买身高标准调高10厘米 2010年10月30日02:54 扬子晚报徐媛园 我要评论(117) 字号: T| T 记者从铁道部12306客服网站获悉,铁道部公布了 修改<铁路旅 ...
- python模拟火车票订票系统_pythonCCF 201609-2火车票购买,PythonCCF2016092,购票
[问题描述] 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一节车厢有20排.每一排5个座位.为方便起见,我们用1到100来给所有的座位编号,第一排是1到5号,第二排是6到 ...
- python火车票购买程序代码_100行Python代码实现自动抢火车票(附源码)
前言 又要过年了,今年你不妨自己写一段代码来抢回家的火车票,是不是很Cool.下面话不多说了,来一起看看详细的介绍吧. 先准备好: 12306网站用户名和密码 chrome浏览器及下载chromedr ...
- 如何应对用智行火车票购买机票后的高额退改手续费???
(免责申明:本人没有刻意制造普通用户和第三方购票平台的矛盾,在这里只是分享自己的一次经历供大家参考!切勿过分解读!) 首先划重点, 不要用智行买机票!不要用智行买机票!不要用智行买机票! 重要的话说三 ...
- 北京:2009年春运火车票购买指南
对火车铁路国有垄断绝对鄙视!!! 2009年春运将从元月11日至明年2月19日结束,为期40天.今年春运的特点是学生流和民工流探亲流三流重叠,春运压力空前集中. 北京地区列车预售期 即日起至2月20日 ...
- java多线程模拟购买火车票
java多线程模拟购买火车票 本次做的是一个火车票的售卖模拟,不管用户是在窗口还是APP上购买,必然不可能买到同一张票这也就是说一张票的售卖必然是一个线程在操作的,所以,我们在写代码是也要注意这一点 ...
- 利用JAVA多线程模拟售票系统,对统一资源进行处理
首先多线程处理统一资源的方式有两种 分别介绍一下两者的区别 synchronized与Lock的区别 1.Lock不是Java语言内置的,synchronized是Java语言的关键字 2.synch ...
- linux 条件变量函数,Linux线程同步之条件变量
条件变量变量也是出自POSIX线程标准,另一种线程同步机制,.主要用来等待某个条件的发生.可以用来同步同一进程中的各个线程.当然如果一个条件变量存放在多个进程共享的某个内存区中,那么还可以通过条件变量 ...
最新文章
- Nginx防盗链,Nginx访问控制, Nginx解析php相关配置, Nginx代理
- Triangular Pastures (二维01背包)
- Django框架(2.django框架环境的搭建、项目的创建、目录文件的介绍、以及运行环境)
- (纪录片)电的故事 Shock Awe The Story of Electricity
- 缺少编译器要求的成员“System.Runtime.CompilerServices.ExtensionAttribute..ctor” 解决方案...
- 京瓷 打印 打印机 账户_UV打印机买回来成废铁?不是选择不对,而是你想太多了……...
- 今日心得:人生就像一杯茶,不会苦一辈子但会苦一阵子
- Kotlin 风险高、RxJava 已过时,Android 原生开发现状分析!
- Java排序算法——选择排序(Selection Sort)
- 【脑洞大开】神经网络vs非公理化推理系统(NARS)
- XV6源代码阅读-虚拟内存管理
- 微信如何保存文件?企业微信如何下载文件?
- Runway!AI技术+视频制作的新一代视频内容生成工具
- 如何用Python面向对象实现盖伦和瑞文互殴?
- 记录下配置腾讯云服务器的过程
- 物联网平台Thingsboard3.2.1源码编译记录
- android执行lua脚本的方法,在Android手机上编写并运行Lua脚本
- 前端后端一起成长激励的句子
- 【5.12-5.13】实训Day-6Day-7记录
- ssh工作流程(工作原理)