Comment arrêter tous les exécutables thread en java exécuteur de la classe?

final ExecutorService executor = Executors.newFixedThreadPool(1);
final Future<?> future = executor.submit(myRunnable);
executor.shutdown();
if(executor.awaitTermination(10, TimeUnit.SECONDS)) {
  System.out.println("task completed");
}else{
  System.out.println("Executor is shutdown now");
}

//MyRunnable method is defined as task which I want to execute in a different thread.

Ici est run méthode de l'exécuteur testamentaire de la classe:

public void run() {
try {
     Thread.sleep(20 * 1000);
} catch (InterruptedException e) {
 //TODO Auto-generated catch block
 e.printStackTrace();
}}

Ici, il est en attente pour 20 deuxième mais quand je lance le code, il déclenche une exception:

java.lang.InterruptedException: sleep interrupted
at java.lang.Thread.sleep(Native Method)

Je ne suis pas en mesure de fermer les threads ruiner dans Java Executor class. Voici mon Code:

  • Créé un nouveau Fil de discussion avec Java exécuteur de la classe à exécuter une tâche que je.e écrit dans MyRunnable
  • executor attendre 10 secondes pour terminer les tâches.
  • Si la tâche est terminée, puis praticable fil a également obtenu de fin.
  • Si la tâche n'est pas terminée dans un délai de 10 seconde puis executor classe doit mettre fin à la discussion.

Tout fonctionne bien sauf la résiliation de tâches dans le dernier scénario. Comment dois-je faire?

OriginalL'auteur Amit Pal | 2013-04-09

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *