java多线程模拟售票,多个窗口售票

1package com.ma.thread001; 2/** 3 * 多线程模拟售票,多个窗口售票 4 * @author ma 5 * 6 */ 7public class SellTicktDemo implements Runnable { 8 9 10 /* 11 * 需求:多线程模拟售票,多个窗口售票 12 * 13 * 分析: 14 * A.需要的类 15 * 1.建立一个多线程的类SellTicktDemo 16 * 2.创建一个测试类SellTicktDemoTest 17 * B.类的关系 18 * 1.多线程的类SellTicktDemo,实现Runnable接口,重写run()方法 19 * 2.SellTicktDemoTest 测试多线程类 20 * C.实现多线程同步 21 * 1.用synchronized()方法实现线程同步 22 * D.在SellTicktDemoTest中实现多数窗口 23 * 24 */ 25 26 //定义票的总数 27 private int total = 100; 28 29 //定义票的编号 30 private int no = total+1; 31 32 //定义一个线程同步对象 33 private Object obj = new Object(); 34 35 @Override 36 public void run() { 37 38 while(true){ 39 //同步锁 40 synchronized(this.obj){ 41 if(this.total > 0){ 42 try { 43 Thread.sleep(100); 44 } catch (InterruptedException e) { 45 e.printStackTrace(); 46 } 47 String msg = Thread.currentThread().getName()+" 售出第 "+(this.no -this.total) +" 张票"; 48 System.out.println(msg); 49 this.total--; 50 }else{ 51 System.out.println("票已售完,请下次再来!"); 52 System.exit(0); 53 } 54 } 55 } 56 57 } 58} 59 60package com.ma.thread001; 61/** 62 * 测试类 63 * @author ma 64 * 65 */ 66public class SellTicktDemoTest { 67 68 public static void main(String[] args) { 69 70 //得到对象 71 SellTicktDemo std = new SellTicktDemo(); 72 73 //把对象放入线程中 74 Thread t1 = new Thread(std,"售票窗口1"); 75 Thread t2 = new Thread(std,"售票窗口2"); 76 Thread t3 = new Thread(std,"售票窗口3"); 77 Thread t4 = new Thread(std,"售票窗口4"); 78 79 t1.start(); 80 t2.start(); 81 t3.start(); 82 t4.start(); 83 84 85 } 86 87}

  输出结果:

售票窗口1 售出第 1 张票
售票窗口4 售出第 2 张票
售票窗口4 售出第 3 张票
售票窗口4 售出第 4 张票
售票窗口3 售出第 5 张票
售票窗口3 售出第 6 张票
售票窗口3 售出第 7 张票
售票窗口3 售出第 8 张票
售票窗口3 售出第 9 张票
售票窗口3 售出第 10 张票
售票窗口3 售出第 11 张票
售票窗口3 售出第 12 张票
售票窗口3 售出第 13 张票
售票窗口3 售出第 14 张票
售票窗口3 售出第 15 张票
售票窗口3 售出第 16 张票
售票窗口3 售出第 17 张票
售票窗口3 售出第 18 张票
售票窗口2 售出第 19 张票
售票窗口3 售出第 20 张票
售票窗口3 售出第 21 张票
售票窗口3 售出第 22 张票
售票窗口4 售出第 23 张票
售票窗口1 售出第 24 张票
售票窗口4 售出第 25 张票
售票窗口4 售出第 26 张票
售票窗口4 售出第 27 张票
售票窗口4 售出第 28 张票
售票窗口4 售出第 29 张票
售票窗口3 售出第 30 张票
售票窗口2 售出第 31 张票
售票窗口2 售出第 32 张票
售票窗口2 售出第 33 张票
售票窗口2 售出第 34 张票
售票窗口3 售出第 35 张票
售票窗口3 售出第 36 张票
售票窗口4 售出第 37 张票
售票窗口1 售出第 38 张票
售票窗口1 售出第 39 张票
售票窗口1 售出第 40 张票
售票窗口4 售出第 41 张票
售票窗口4 售出第 42 张票
售票窗口3 售出第 43 张票
售票窗口3 售出第 44 张票
售票窗口3 售出第 45 张票
售票窗口3 售出第 46 张票
售票窗口3 售出第 47 张票
售票窗口3 售出第 48 张票
售票窗口2 售出第 49 张票
售票窗口2 售出第 50 张票
售票窗口3 售出第 51 张票
售票窗口3 售出第 52 张票
售票窗口4 售出第 53 张票
售票窗口1 售出第 54 张票
售票窗口1 售出第 55 张票
售票窗口4 售出第 56 张票
售票窗口4 售出第 57 张票
售票窗口3 售出第 58 张票
售票窗口3 售出第 59 张票
售票窗口3 售出第 60 张票
售票窗口3 售出第 61 张票
售票窗口3 售出第 62 张票
售票窗口2 售出第 63 张票
售票窗口2 售出第 64 张票
售票窗口2 售出第 65 张票
售票窗口2 售出第 66 张票
售票窗口2 售出第 67 张票
售票窗口2 售出第 68 张票
售票窗口3 售出第 69 张票
售票窗口3 售出第 70 张票
售票窗口3 售出第 71 张票
售票窗口3 售出第 72 张票
售票窗口3 售出第 73 张票
售票窗口4 售出第 74 张票
售票窗口1 售出第 75 张票
售票窗口1 售出第 76 张票
售票窗口1 售出第 77 张票
售票窗口1 售出第 78 张票
售票窗口1 售出第 79 张票
售票窗口1 售出第 80 张票
售票窗口1 售出第 81 张票
售票窗口1 售出第 82 张票
售票窗口4 售出第 83 张票
售票窗口4 售出第 84 张票
售票窗口4 售出第 85 张票
售票窗口4 售出第 86 张票
售票窗口3 售出第 87 张票
售票窗口3 售出第 88 张票
售票窗口3 售出第 89 张票
售票窗口2 售出第 90 张票
售票窗口3 售出第 91 张票
售票窗口3 售出第 92 张票
售票窗口3 售出第 93 张票
售票窗口3 售出第 94 张票
售票窗口3 售出第 95 张票
售票窗口4 售出第 96 张票
售票窗口1 售出第 97 张票
售票窗口1 售出第 98 张票
售票窗口4 售出第 99 张票
售票窗口4 售出第 100 张票
票已售完,请下次再来!

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java 多线程同步锁的使用 三个售票窗口同时出售20张票

packageThread;/三个售票窗口同时出售20张票程序分析:1.票数要使用同一个静态值2.为保证不会出现卖出同一个票数,要java多线程同步锁。设计思路:1.创建一个站台类Station,继承Thread,重写run方法,在run方法里面执行售票操作

java多线程的常见例子

一.相关知识:Java多线程程序设计到的知识:(一)对同一个数量进行操作(二)对同一个对象进行操作(三)回调方法使用(四)线程同步,死锁问题(五)线程通信 等等二.示例一:三个售票窗口同时出售20张票;程序分析:1.票数要使用同一个静态值 2.为保证不会出现卖出同一个票数,要java多线程同步锁。设计思路:1.创建