私はJavaが初めてで、誰かから与えられたコードを使用しています。そこでは、コードの最後で、スレッドが終了していない場合にスレッドを中断します。コードのタイミングを測定しています。
問題は、Java コードが最初にすべてのスレッドを発行し、最後に中断することです。中断は必要ですか?すべてのスレッドが実際に終了するまで待つことはできませんか? または、割り込みをスキップするだけかもしれません (これらのスレッドは process exec コマンドを使用してプロセスを実行しており、とにかく終了します)。関連するコードは次のとおりです。まず、個々のスレッドのコード:
String commandString = "./script.scr ";
process = Runtime.getRuntime().exec(commandString);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
while ((lsString = bufferedReader.readLine()) != null)
{
System.out.println(lsString);
}
try
{
process.waitFor();
}
これらのスレッドをディスパッチする部分のコードは次のとおりです。
public void stopWhenAllTaskFinished()
{
while(notFinished) {sleep(50);} //notFinished is class variable and somewhere else it will set to false.
//now finished.
//Interrupt all the threads
for (int i=0; i<nThreads; i++) {
threads[i].interrupt();
}
}
この関数は、次のようなメイン クラスから呼び出されます。
obj.stopWhenAllTaskFinished()
洞察や答えをいただければ幸いです。