多线程抢票功能 要求:使用多线程模拟抢票功能,两个线程分别对应两个抢票人员等待放票,线程启动后分别输出人员1或2等待放票。当输入增加一张票号后,抢到的人员输出:人员×:抢到票了,票号:×××。抢到票的
时间: 2024-06-14 20:05:39 浏览: 52
以下是使用Java多线程模拟抢票功能的示例代码:
```java
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class TicketSystem {
private static int ticketCount = 1;
private static Lock lock = new ReentrantLock();
public static void main(String[] args) {
Thread person1 = new Thread(new TicketRunnable(1));
Thread person2 = new Thread(new TicketRunnable(2));
person1.start();
person2.start();
}
static class TicketRunnable implements Runnable {
private int person;
public TicketRunnable(int person) {
this.person = person;
}
@Override
public void run() {
try {
System.out.println("人员" + person + "等待放票");
Thread.sleep(1000); // 模拟等待放票的时间
lock.lock();
if (ticketCount > 0) {
System.out.println("人员" + person + "抢到票了,票号:" + ticketCount);
ticketCount++; } else {
System.out.println("票已售罄");
}
lock.unlock();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
```
阅读全文