最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
用Java代码模拟卖100张火车票问题解析
时间:2020-11-11 编辑:袖梨 来源:一聚教程网
本篇文章小编给大家分享一下用Java代码模拟卖100张火车票问题解析,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
用Java代码模拟卖100张火车票问题:四个售票窗口同时售票且不能卖出同一张火车票。
代码如下:
package lesson; public class Demo1 { public static void main(String[] args) { // TODO Auto-generated method stub Train tt = new Train(); Thread t1 = new Thread(tt); Thread t2 = new Thread(tt); Thread t3 = new Thread(tt); Thread t4 = new Thread(tt); t1.setName("窗口1"); t2.setName("窗口2"); t3.setName("窗口3"); t4.setName("窗口4"); t1.start(); t2.start(); t3.start(); t4.start(); } } class Train implements Runnable{ int a= 1; @Override public synchronized void run() {//synchronized为进程上锁 // TODO Auto-generated method stub while(true) { if(a<=100) { System.out.println(Thread.currentThread().getName()+"卖出"+a+"号票"); a++; } try { this.wait(230); // Thread.sleep(100);//结果输出只有窗口1卖了所有票如图2所示 } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
wait()正常运行结果图1:
sleep()运行结果如图2所示:
两种结果不同的主要主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。
相关文章
- SpringBoot自定义bean绑定解析 10-24
- Javaweb工程运行报错HTTP Status 404解决教程 10-20
- JAVA获取jvm和操作系统相关信息方法 10-20
- BeanFactory和FactoryBean的区别讲解 10-20
- 微信小程序的宿主环境实现教程 10-10
- dispatchEvent解决重叠元素响应事件教程 10-10