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

本文展示了如何使用Java实现多线程模拟售票系统,通过多个售票窗口并发销售100张票。代码中实现了Runnable接口,利用synchronized关键字确保线程安全,避免票数超卖。测试结果显示各个窗口能够并发地售出票,直至所有票售罄。
摘要由CSDN通过智能技术生成

package com.ma.thread001;

/**

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

* @author ma

*

*/

public class SellTicktDemo implements Runnable {

/*

* 需求:多线程模拟售票,多个窗口售票

*

* 分析:

* A.需要的类

* 1.建立一个多线程的类SellTicktDemo

* 2.创建一个测试类SellTicktDemoTest

* B.类的关系

* 1.多线程的类SellTicktDemo,实现Runnable接口,重写run()方法

* 2.SellTicktDemoTest 测试多线程类

* C.实现多线程同步

* 1.用synchronized()方法实现线程同步

* D.在SellTicktDemoTest中实现多数窗口

*

*/

//定义票的总数

private int total = 100;

//定义票的编号

private int no = total+1;

//定义一个线程同步对象

private Object obj = new Object();

@Override

public void run() {

while(true){

//同步锁

synchronized(this.obj){

if(this.total > 0){

try {

Thread.sleep(100);

} catch (InterruptedException e) {

e.printStackTrace();

}

String msg = Thread.currentThread().getName()+" 售出第 "+(this.no -this.total) +" 张票";

System.out.println(msg);

this.total--;

}else{

System.out.println("票已售完,请下次再来!");

System.exit(0);

}

}

}

}

}

package com.ma.thread001;

/**

* 测试类

* @author ma

*

*/

public class SellTicktDemoTest {

public static void main(String[] args) {

//得到对象

SellTicktDemo std = new SellTicktDemo();

//把对象放入线程中

Thread t1 = new Thread(std,"售票窗口1");

Thread t2 = new Thread(std,"售票窗口2");

Thread t3 = new Thread(std,"售票窗口3");

Thread t4 = new Thread(std,"售票窗口4");

t1.start();

t2.start();

t3.start();

t4.start();

}

}

输出结果:

售票窗口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 张票

票已售完,请下次再来!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值