学员作品 学员心得技术园地 潮人地 Android(安卓)培训 杭州电脑(计算机)培训 杭州网络营销培训 杭州JAVA培训
返回首页
当前位置: 主页 > 学员天地 > 技术园地 >

Java多线程卖火车票系统出故障,导致票数出负数!

时间:2017-09-19 17:24来源:未知 作者:杭州华育 点击:
Java多 线程 卖票的例子,问为什么出现负数票。试着在电脑上运行了一下,最终得出答案,情况图: 分析 :为什么会如此。我们可以假设,当只有一张票的时候,乙,甲、丙和丁四个 java线程 依次加入就绪队列,乙 java线程 先获得 CPU 执行权,通过 if 语句,然

 Java多线程卖票的例子,问为什么出现负数票。试着在电脑上运行了一下,最终得出答案,情况图:

java代线程
 
java代线程

分析:为什么会如此。我们可以假设,当只有一张票的时候,乙,甲、丙和丁四个java线程依次加入就绪队列,乙java线程先获得 CPU 执行权,通过 if 语句,然后在 sleep(10)下休眠(注意,就是这个地方),也就是在这短时间,加、丙和丁java线程也依次通过了 if 语句。10 ms 后,乙线程 执行下面的打印票信息,即 1 号票,然后,另外三个线程也依次苏醒,输出 0 号票,-1 号票,-2 号票。

 

解决方案:让 “打印票信息和tickets--”在 sleep(10) 前面 输出,不给其他java线程“趁机”溜进来的机会。当然,我们这里的 sleep休眠的时间不能设置太短,10ms以上为好,如果是1ms就不太好。

 

(责任编辑:杭州华育 ;杭州java培训,网络营销培训,杭州计算机培训,it培训,详询客服报名咨询
分享到:
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
提交报名信息

2017年杭州将加大力度经济转型,吸纳更多的技术人才落户杭州,软件人才需求量更是大幅提升,针对目前杭州IT行业人才需求“井喷”现象,华育软件杭州实训基地与杭州155家IT名企合作,建立人才培养与输送关系,启动“Eduask国家高端IT紧缺人才培养工程”。7月针对杭州地区18-28岁大中专生待业青年发放68个技能实训名额(应届大中专毕业生优先),经短期专业岗前实训后推荐进入企业,起薪4500-8000元,五险一金。

姓名: * 性别:
学历: 电话: *
所在地: *
您目前状况:
留言:
*