Jestem nowy w Javie i używając kodu podanego przez kogoś. Tam, na końcu kodu, przerywają wątek, jeśli jeszcze nie skończył. Zmierzam czas kodu.java: przerywa wątek absolutnie konieczny
Problem polega na tym, że kod Java najpierw wywołuje wszystkie wątki, a następnie na końcu przerywa. Czy przerywanie jest konieczne? Czy nie możemy poczekać, aż wszystkie nici się skończą? Lub może po prostu pomijać przerywanie (te wątki uruchamiają procesy za pomocą polecenia exec exec, a one i tak się skończą). Oto odpowiedni kod. Pierwszy kod dla pojedynczego wątku:
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();
}
Teraz kod części, która wysyła te wątki:
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();
}
}
Ta funkcja jest wywoływana z głównej klasy jak:
obj.stopWhenAllTaskFinished()
ja wielce doceń wszelkie wgląd lub odpowiedź.
Niestety Twój opis jest zbyt ogólnikowe. Przerwa może, ale nie musi być potrzebna. Wszystko zależy od tego, co robi "Wątek". – Frankie
Dodałem odpowiedni kod – user984260
Szczerze mówiąc, wygląda to jak paranoiczna kontrola czegoś, co nigdy się nie zdarza. – trutheality