Je suis nouveau sur Java et j'utilise un code donné par quelqu'un. Là, à la fin du code, ils interrompent un thread s'il n'a pas fini. Je mesure le timing du code.java: interrompre le thread absolument nécessaire
Le problème est que le code Java émet d'abord tous les threads, puis à la fin il interrompt. L'interruption est-elle nécessaire? Ne pouvons-nous pas attendre que tous les fils finissent réellement? Ou peut-être simplement interrompre l'interruption (ces threads exécutent des processus en utilisant la commande process exec et ils finiront quand même). Voici le code pertinent. Tout d'abord le code de fil individuel:
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();
}
Maintenant, le code de la partie qui envoie ces fils:
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();
}
}
Cette fonction est appelée de classe principale comme:
obj.stopWhenAllTaskFinished()
J'ai beaucoup apprécier tout aperçu ou réponse.
Malheureusement votre description est trop vague. L'interruption peut être nécessaire ou non. Tout dépend de ce que fait le 'Thread'. – Frankie
J'ai ajouté le code correspondant – user984260
Honnêtement, il ressemble à un chèque paranoïaque pour quelque chose qui n'arrive jamais. – trutheality