java编写一个程序,模拟三个售票窗口同时进行售票,总共有20张票可售,每个窗口每次售出一张票,要求打印出售票的过程,即哪个窗口售出一张票,剩余几张票。票全部售完后三个线程结束,并输出“票已售罄”。
时间: 2024-05-03 20:16:29 浏览: 24
以下是使用 Java 编写的程序,模拟三个售票窗口同时进行售票,总共有20张票可售,每个窗口每次售出一张票,要求打印出售票的过程,即哪个窗口售出一张票,剩余几张票。票全部售完后三个线程结束,并输出“票已售罄”。
```java
public class TicketSale implements Runnable {
private int tickets = 20;
public synchronized void sale() {
if (tickets > 0) {
System.out.println(Thread.currentThread().getName() + " 售出了一张票,剩余 " + (--tickets) + " 张票");
}
if (tickets == 0) {
System.out.println("票已售罄");
System.exit(0);
}
}
@Override
public void run() {
while (true) {
sale();
}
}
public static void main(String[] args) {
TicketSale t = new TicketSale();
Thread t1 = new Thread(t, "窗口1");
Thread t2 = new Thread(t, "窗口2");
Thread t3 = new Thread(t, "窗口3");
t1.start();
t2.start();
t3.start();
}
}
```
在上面的程序中,我们首先创建了一个 `TicketSale` 类实现了 `Runnable` 接口,并且定义了一个 `tickets` 成员变量,表示剩余的票数。然后我们实现了一个 `sale` 方法,用来售出一张票并打印出售票的过程。在 `sale` 方法中,我们使用了 `synchronized` 关键字来保证线程安全。如果票已经售罄,则输出 "票已售罄" 并通过 `System.exit(0)` 方法结束程序。最后,我们在 `main` 方法中创建了三个线程来模拟三个售票窗口,然后启动这三个线程。
当我们运行这个程序时,它会不断地输出每个窗口售出一张票的过程,直到所有的票都售空,然后输出 "票已售罄" 并结束程序。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)