java多线程售票实例源码
demo项目名称:《项目java多线程售票实例源码》java源代码:
package com.javazx.test.thread;
/**
* 车站类
*/
public class Station extends Thread {
//构造方法 线程起名
public Station(String name) {
super(name);
}
static int tick = 20;//票总数
static int step = 0;//当前是第几张票
static Object ob = "aa";//锁对象 随意起名
//重写run方法
@Override
public void run() {
while (tick > 0) {
synchronized (ob) {
if (tick > 0) {
step++;
System.out.println(getName() + "卖出了第" + step + "张票");
tick--;
} else {
System.out.println("无票了");
}
}
//每卖一张 睡1000毫秒
try {
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
package com.javazx.test.thread;
/**
* 窗口类
*/
public class Windows {
public static void main(String[] args) {
//初始化三个卖票窗口
Station s1 = new Station("窗口1");
Station s2 = new Station("窗口2");
Station s3 = new Station("窗口3");
//三个窗口开始卖票
s1.start();
s2.start();
s3.start();
}
}
运行结果:
窗口1卖出了第1张票
窗口3卖出了第2张票
窗口2卖出了第3张票
窗口1卖出了第4张票
窗口2卖出了第5张票
窗口3卖出了第6张票
窗口1卖出了第7张票
窗口2卖出了第8张票
窗口3卖出了第9张票
窗口3卖出了第10张票
窗口2卖出了第11张票
窗口1卖出了第12张票
窗口3卖出了第13张票
窗口2卖出了第14张票
窗口1卖出了第15张票
窗口3卖出了第16张票
窗口2卖出了第17张票
窗口1卖出了第18张票
窗口3卖出了第19张票
窗口1卖出了第20张票
无票了
页:
[1]