3つのスレッドをデプロイするaction()というメソッドがあります。デプロイされた各スレッドまたはワーカースレッドは、ブール型の単一インスタンス変数がtrueであることに基づいてwhileループに分類されます。たとえば、boolean doWork = trueの場合、各スレッドにはwhile(doWork){}ループがあります。
スレッドが終了すると、ジョブはdoWorkをfalseに設定し、すべてのスレッドのループを停止します。次に、どういうわけかメインスレッドにaction()メソッドをリコールさせて、別のジョブを実行するためにスレッドを再デプロイできるようにしたいと思います。(ワーカースレッドの1つを使用してaction()メソッドを呼び出しても大丈夫ですか?)action()メソッドを呼び出して、どういうわけか死ぬと、ワーカースレッドは終了しますか?
簡単にするために、例を2つのスレッドに制限しました
ありがとう
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
}
}
}