我有一个名为 action() 的方法,它部署了三个线程。每个部署的线程或工作线程都基于布尔类型的单个实例变量为 true 进入 while 循环,例如 boolean doWork = true,每个线程将有一个 while(doWork){} 循环。
当一个线程完成该作业时,会将 doWork 设置为 false 以阻止所有线程循环。然后我希望能够以某种方式让主线程调用 action() 方法来重新部署线程来完成另一项工作。(如果我使用其中一个工作线程来调用 action() 方法可以吗?)工作线程会在调用 action() 方法后终止并以某种方式死亡吗?
为简单起见,我将示例限制为两个线程
谢谢
class TestThreads{
boolean doWork = true;
void action(){
ThreadOne t1 = new ThreadOne();
ThreadTwo t2 = new ThreadTwo();
}
//innerclasses
class ThreadOne implements Runnable{
Thread trd1;
public ThreadOne(){//constructor
if(trd1 == null){
trd1 = new Thread(this);
trd1.start();
}
}
@Override
public void run(){
while(doWork){
//random condition
//would set doWork = false;
//stop all other threads
}
action();//is the method in the main class
}
}
class ThreadTwo implements Runnable{
Thread trd2;
public ThreadTwo(){//constroctor
if(trd2 == null){
trd2 = new Thread(this);
trd2.start();
}
}
@Override
public void run(){
while(doWork){
//random condition
//would set doWork = false;
//stop all other threads
}
action();//is the method in the main class
}
}
}