java多线程电梯超载
时间: 2023-12-26 19:28:10 浏览: 27
Java多线程编程可以用于模拟电梯超载的情况。下面是一个简单的示例代码:
```java
import java.util.concurrent.Semaphore;
public class Elevator {
private static final int MAX_CAPACITY = 10;
private static final int TOTAL_PASSENGERS = 20;
private static Semaphore semaphore = new Semaphore(MAX_CAPACITY);
public static void main(String[] args) {
for (int i = 1; i <= TOTAL_PASSENGERS; i++) {
Thread passengerThread = new Thread(new Passenger(i));
passengerThread.start();
}
}
static class Passenger implements Runnable {
private int id;
public Passenger(int id) {
this.id = id;
}
@Override
public void run() {
try {
System.out.println("Passenger " + id + " is waiting for the elevator.");
semaphore.acquire();
System.out.println("Passenger " + id + " has entered the elevator.");
Thread.sleep(2000); // 模拟乘客在电梯中的停留时间
System.out.println("Passenger " + id + " has exited the elevator.");
semaphore.release();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
```
在这个示例中,我们使用了`Semaphore`来控制电梯的最大容量。每个乘客都是一个线程,当乘客进入电梯时,它会尝试获取一个许可证(`acquire()`),如果电梯已满,则乘客将等待。当乘客离开电梯时,它会释放一个许可证(`release()`),以便其他乘客可以进入电梯。
请注意,这只是一个简单的示例,实际的电梯系统可能需要更复杂的逻辑和线程同步机制来处理更多的情况和需求。