Java 同时暂停/挂起多个线程,然后继续

Java 同时暂停/挂起多个线程,然后继续,java,multithreading,button,pause,Java,Multithreading,Button,Pause,是的,这是一个作业问题 我正在为电梯模拟创建多个线程,现在线程正在运行,但现在必须中断它们。我尝试过在按下“暂停”按钮时使用访问修饰符进行更改 eg: While(true){ if(!Paused){ *run code* } else { thread.sleep(10000); System.out.println("Paused"); }} 但它不起作用,我试着调用电梯并直接暂停它,但我认为我的问题是,我没

是的,这是一个作业问题 我正在为电梯模拟创建多个线程,现在线程正在运行,但现在必须中断它们。我尝试过在按下“暂停”按钮时使用访问修饰符进行更改

eg: While(true){
     if(!Paused){
      *run code*
      }
     else {
       thread.sleep(10000);
      System.out.println("Paused");
     }}
但它不起作用,我试着调用电梯并直接暂停它,但我认为我的问题是,我没有访问线程,我正在访问电梯对象,而不是线程本身

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);
            }
        }
    }
}

我并不需要电梯本身的帮助,只需要管理线程,任何关于如何管理此问题的建议都将不胜感激。

为什么不让一个类运行类似布尔值的东西呢。每个线程都可以检查运行是真是假,并执行相应的操作。您可以使用监视器锁或
重新导入
锁来“暂停”线程(当设置了相应的标志时),这将允许您在将来的某个时候“唤醒”它们也许我不明白这个问题,但是您不应该使用
等待
通知
(分别是
通知所有人
)吗?但是从您的示例代码中,我只能看到您正在处理的单个线程。多线程在哪里发生?或者你像MadProgrammer建议的那样使用一个
信号灯
。你看到了什么行为,它与你想要的行为有何不同?此外,请提供可编译和运行的代码。您可以去掉电梯的行为,但是为了理解并发性问题,您遗漏了很多我们需要看到的内容。