是的,首先是这是一个任务问题 我正在为Elevator Simulation创建多个线程,而我现在正在运行线程但现在必须中断它们。我已尝试使用访问修饰符在按下“暂停”按钮时更改
eg: While(true){
if(!Paused){
*run code*
}
else {
thread.sleep(10000);
System.out.println("Paused");
}}
但它不起作用,我试过调用电梯并直接暂停它,但我认为我的问题是,我是不是访问线程,我正在访问Elevator对象而不是Thread本身
eg: public void aWait() {
for (Elevator e : elevators)
{
e.pauseThread();
}}
仅针对上下文,我的runnable实现如下:
eg: public void run() {
while (true) {
while (!paused) {
moveToNextDestination();
process();
System.out.println(Building.getStatusReport());}}}
我的过程就像这样
eg: public void process() {
Person person;
for (Elevator elevator : Building.elevators) {
if (elevator.isAvailable() && (elevator.getCurrentFloor() == 0)) {
while (Building.queue.size() > 0 && elevator.hasCapacity()) {
person = Building.queue.get(0);
elevator.loadPerson(person);
Building.queue.remove(0);
}
}
}
}
我真的不需要帮助电梯本身只管理线程,任何有关如何管理这个问题的建议都将不胜感激。