Я новичок в 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()
Я очень ценю любую информацию или ответ.