java多线程模拟售票
时间: 2023-11-07 18:04:13 浏览: 124
使用多线程技术,模拟通过四个窗口卖出1000张火车票的功能。
Java多线程模拟售票程序可以通过实现Runnable接口或继承Thread类来实现。这两种方式都可以达到多线程的效果。在实现Runnable接口的情况下,可以创建一个实现了Runnable接口的类,并在该类中重写run()方法。然后,通过创建多个线程对象,并将该实现类的对象作为参数传入Thread的构造函数中,然后调用start()方法启动线程。在实现Thread类的情况下,可以直接创建继承了Thread类的子类,并在子类中重写run()方法。然后,通过创建多个子类对象,调用start()方法启动线程。
下面是一个使用实现Runnable接口的例子:
```
public class TicketSalesByRunnable {
public static void main(String[] args) {
SellTicket02 sellTicket02 = new SellTicket02();
new Thread(sellTicket02).start();
new Thread(sellTicket02).start();
new Thread(sellTicket02).start();
}
}
class SellTicket02 implements Runnable {
private int ticketNum = 100;
@Override
public void run() {
while (true) {
if (ticketNum <= 0) {
System.out.println("没有余票!");
break;
}
try {
Thread.sleep(50);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
System.out.println("窗口" + Thread.currentThread().getName() + "售出一张票。" + "剩余票数:" + (--ticketNum));
}
}
}
```
下面是一个使用继承Thread类的例子:
```
public class TicketSalesByThread {
public static void main(String[] args) {
SellTicket sellTicket = new SellTicket();
SellTicket sellTicket1 = new SellTicket();
SellTicket sellTicket2 = new SellTicket();
sellTicket.start();
sellTicket1.start();
sellTicket2.start();
}
}
class SellTicket extends Thread {
private static int ticketNum = 100;
@Override
public void run() {
while (true) {
if (ticketNum <= 0) {
System.out.println("没有余票!");
break;
}
try {
Thread.sleep(50);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
System.out.println("窗口" + Thread.currentThread().getName() + "售出一张票。" + "剩余票数:" + (--ticketNum));
}
}
}
```
阅读全文