用Java语言编写一个多线程程序,模拟火车售票窗口的售票功能。创建线程1和线程2,通过这两个线程共同售出100张票
时间: 2023-10-25 15:16:44 浏览: 169
好的,以下是用 Java 语言编写的多线程程序,模拟火车售票窗口的售票功能,共售出100张票:
```java
public class TicketSeller implements Runnable {
private int tickets = 100; // 初始化100张票
@Override
public void run() {
while (tickets > 0) { // 只要还有票就一直售票
synchronized (this) { // 加锁,保证线程安全
if (tickets > 0) { // 只有还有票时才能售票
System.out.println(Thread.currentThread().getName() + "售出第" + tickets + "张票");
tickets--; // 售出一张票,总票数减1
}
}
}
}
public static void main(String[] args) {
TicketSeller seller = new TicketSeller(); // 创建售票员对象
Thread thread1 = new Thread(seller, "售票窗口1"); // 创建线程1,代表窗口1
Thread thread2 = new Thread(seller, "售票窗口2"); // 创建线程2,代表窗口2
thread1.start(); // 启动线程1
thread2.start(); // 启动线程2
}
}
```
以上程序使用了 Runnable 接口实现多线程,其中使用了 synchronized 关键字来保证线程安全。在 run 方法中,只要还有票就会一直售票,直到售完为止。在 main 方法中,创建了两个线程,代表两个售票窗口,然后启动这两个线程,共同售出100张票。
阅读全文