这个问题类似于这里提出的问题: 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()之后新线程没有启动。
我必须在并发编程方面做一个相当基础的错误,我尝试了各种替代方案,但徒劳无功。如果有人可以帮我解释一下,我会很高兴。