一、需求分析
利用多线程的思想模拟三个窗口售票员卖30张票的功能:
火车站要售票,我们模拟火车站的售票过程。假设正值春运时期,西安到兰州的动车票只有 30 张(西安火车站窗口只能卖30张票)。我们采用线程对象来模拟火车站的售票窗口,实现多个窗口同时卖火车票, 采用 Runnable 接口子类来模拟票数。
二、代码实现
1、继承 Thread 类的方式
class TicketWindow extends Thread {
// 车票数量
private int ticket = 30;
@Override
public void run() {
while (true) {
if (ticket > 0) {
System.out.println(Thread.currentThread().getName() + "卖出了第" + ticket-- + "张票," + "剩余" + ticket + "张票");
} else {
System.out.println(Thread.currentThread().getName() + "余票不足,停止售票!");
break;
}
}
}
}
public class SellTicketTest1 {
public static void main(String[] args) {
TicketWindow tw1 = new TicketWindow();
TicketWindow tw2 = new TicketWindow();
TicketWindow tw3 = new TicketWindow();
tw1.setName("窗口1");
tw2.setName("窗口2