多线程 - 当条件在另一个类中满足并启动新线程时暂停线程

时间:2016-03-21 10:15:10

标签: java multithreading wait

这个问题类似于这里提出的问题: Pausing Thread and resuming

我有5个班级: A,B,C,D,E类。

A类是启动启动B类的线程的主类。 B类启动C类,C类又调用E级进行所有处理。

我正在尝试启动多个线程作为处理逻辑,输入文件将是相同的。现在我的问题是,E类有一个固定的时间来进行处理,如果它超过了这个限制,必须从A类(主线程类)启动一个新线程,并且应该暂停前一个线程直到新的当前线程饰面。

我尝试通过检查E类中的时间限制然后调用A类中将wait()设置为true的函数来使用布尔变量。请参阅以下代码

synchronized(this){
            while(!isRunning){
                try {
                    wait();
                    //Wrote the code to start new thread here

                } catch (InterruptedException ex) {
                     Logger.getLogger(Scheduler.class.getName()).log(Level.SEVERE, null, ex);
                }
            }//end of while

    }//end of synchronized

   synchronized public static void pause(){

      System.out.println("paused");
      isRunning = false;

    }//end of pause

    synchronized public static void resume(){

      System.out.println("resume");
      isRunning = true;
      notify();
    }//end of resume

从类E调用pause()和resume()。但是线程没有停止并且执行并且在wait()之后新线程没有启动。

我必须在并发编程方面做一个相当基础的错误,我尝试了各种替代方案,但徒劳无功。如果有人可以帮我解释一下,我会很高兴。

0 个答案:

没有答案