Soy nuevo en Java y uso un código proporcionado por alguien. Allí, al final del código, interrumpen un hilo si no ha terminado. Estoy midiendo el tiempo del código.java: está interrumpiendo el hilo absolutamente necesario
El problema es que el código Java primero emite todos los hilos, y luego al final interrumpe. ¿Es necesario interrumpir? ¿No podemos esperar hasta que todos los hilos realmente terminen? O puede ser solo omitir la interrupción (estos hilos están ejecutando procesos usando el comando exec de proceso y terminarán de todos modos). Aquí está el código relevante. En primer lugar el código de hilo individual:
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();
}
Ahora el código de la parte que envía estos hilos:
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();
}
}
Esta función se llama de la clase principal como:
obj.stopWhenAllTaskFinished()
I enormemente apreciar cualquier idea o respuesta.
Desgraciadamente su descripción es demasiado vaga. La interrupción puede o no ser necesaria. Todo depende de lo que haga el 'Thread'. – Frankie
He agregado el código correspondiente – user984260
Honestamente, parece una prueba paranoica de algo que nunca sucede. – trutheality