zl程序教程

您现在的位置是:首页 >  后端

当前栏目

各窗口共同卖票 【 Java 多线程 】

JAVA多线程 窗口 共同
2023-06-13 09:17:22 时间

现实中也存在这样的情况: 模拟一个火车站的售票系统,假如当日从A地发往B地的火车票只有10张,且允许所有窗口卖这10张票,每一个窗口也相当于一个线程。

1、Runnable接口实现

public class Main {

	public static void main(String[] args) {

		Test m = new Test();

		Thread w1 = new Thread(m, "window 1");
		Thread w2 = new Thread(m, "window 2");
		Thread w3 = new Thread(m, "window 3");

		w1.start();
		w2.start();
		w3.start();

	}
}

class Test implements Runnable {
	private int n = 10;

	public void run() {
		while (n > 0) {
			System.out.println(n-- + " is saled by " + Thread.currentThread().getName());
		}
	}
}

2、Thread子类实现

public class Main {

	public static void main(String[] args) {

		Ticket t = new Ticket();
		Test w1 = new Test(t,"window 1");
		Test w2 = new Test(t,"window 2");
		Test w3 = new Test(t,"window 3");
		
		w1.start();
		w2.start();
		w3.start();
	}
}

class Ticket {
	int tic = 10;
}
class Test extends Thread{
	private Ticket tick;
	public Test(Ticket tick, String name){
		super(name);
		this.tick = tick;
	}
	public void run(){
		while(tick.tic > 0){
			System.out.println(tick.tic --  + " is saled by " + Thread.currentThread().getName());
		}
	}
}