package ticket;
//使用多线程,模拟三个线程同时售票 100张
public class SellTicket {
public static void main(String[] args) {
SellTicket01 sellTicket01 = new SellTicket01();
SellTicket01 sellTicket02 = new SellTicket01();
SellTicket01 sellTicket03 = new SellTicket01();
// 会出现票数超卖
sellTicket01.start();
sellTicket02.start();
sellTicket03.start();
// System.out.println("使用Runnable接口");
// SellTicket02 sellTicket02 = new SellTicket02();
// new Thread(sellTicket02).start();
// new Thread(sellTicket02).start();
// new Thread(sellTicket02).start();
}
}
//使用Thread方式
class SellTicket01 extends Thread {
private static int ticketNum = 100; //static 多个线程共享
public void run() {
while (true) {
if (ticketNum <= 0) {
System.out.println("票卖完啦");
break;
}
//休眠50毫秒,模拟一下
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
ticketNum--;
System.out.println("窗口" + Thread.currentThread().getName() + "卖了一张票,剩余"
+ ticketNum + "张票");
}
}
}
class SellTicket02 implements Runnable {
private int ticketNum = 100;
public void run() {
while (true) {
if (ticketNum <= 0) {
System.out.println("票卖完啦");
break;
}
//休眠50毫秒,模拟一下
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
ticketNum--;
System.out.println("窗口" + Thread.currentThread().getName() + "卖了一张票,剩余"
+ ticketNum + "张票");
}
}
}
Java多线程模拟卖票(未同步版)
于 2022-02-10 19:21:12 首次发布