Maison > Java > javaDidacticiel > Comment attendre efficacement la fin d'une tâche à l'aide d'ExecutorService ?

Comment attendre efficacement la fin d'une tâche à l'aide d'ExecutorService ?

Mary-Kate Olsen
Libérer: 2024-12-14 04:41:09
original
337 Les gens l'ont consulté

How to Efficiently Await Task Completion Using ExecutorService?

ExecutorService : attendre la fin des tâches

Lors de l'utilisation d'ExecutorService, un développeur peut rencontrer le besoin de suspendre l'exécution jusqu'à ce que toutes les tâches assignées soient terminées. Cette enquête explore l'approche la plus simple pour atteindre cet objectif.

Question :

Exécuter une multitude de tâches de calcul, une par cœur, et suspendre l'exécution jusqu'à leur achèvement. L'implémentation actuelle utilise ExecutorService.execute() et es.wait(), mais fait face à une IllegalMonitorStateException.

Réponse :

Employez ExecutorService.invokeAll(), une solution simple qui accomplit la fonctionnalité souhaitée avec une seule ligne de code:

List<Callable<Object>> todo = new ArrayList<Callable<Object>>(singleTable.size());

for (DataTable singleTable: uniquePhrases) {
    todo.add(Executors.callable(new ComputeDTask(singleTable))); 
}

List<Future<Object>> answers = es.invokeAll(todo);
Copier après la connexion

invokeAll() suspend l'exécution jusqu'à ce que toutes les tâches soient terminées, rendant l'arrêt manuel et waitTermination() inutiles. Cette approche s'aligne sur les instances ExecutorService réutilisables sur plusieurs exécutions.

Pour une exploration plus approfondie des sujets connexes, consultez ces références :

  • [SO : Await Thread Completion](URL)
  • [SO : Valeurs de retour du fil](URL)
  • [SO : InvoqueAll() et Collection>](URL)
  • [SO : Considérations sur la synchronisation](URL)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal