使用Java语言生成多线程抢购车票的代码
时间: 2023-05-16 17:04:55 浏览: 221
以下是一个简单的Java多线程抢购车票的代码示例:
```java
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class TicketBookingSystem {
private static int totalTickets = 100; // 总票数
private static int remainingTickets = totalTickets; // 剩余票数
public static void main(String[] args) {
ExecutorService executorService = Executors.newFixedThreadPool(5); // 创建一个线程池,最多同时有5个线程在运行
for (int i = 1; i <= 10; i++) { // 模拟10个用户同时抢购
executorService.execute(() -> {
synchronized (TicketBookingSystem.class) { // 使用synchronized关键字保证线程安全
if (remainingTickets > 0) {
System.out.println(Thread.currentThread().getName() + " 抢到了第 " + (totalTickets - remainingTickets + 1) + " 张票");
remainingTickets--;
} else {
System.out.println(Thread.currentThread().getName() + " 抢票失败,已经没有票了");
}
}
});
}
executorService.shutdown(); // 关闭线程池
}
}
```
这个代码使用了Java的线程池和synchronized关键字来实现多线程抢购车票。每个用户都是一个线程,当剩余票数大于0时,就可以抢到一张票,否则就抢票失败。