Executor

L'interface Executor et la classe Executors ont été introduites en Java 5 afin de fournir des fabriques de threads (classe Executors).

En particulier, il est possible de créer des pool de threads afin d'éviter d'avoir à créer des threads à chaque fois. Un thread du pool peut être réutilisé.

L'interface ExecutorService est aussi utilisée en liaison avec l'interface Callable et la classe Future (introduits aussi en Java 5) pour récupérer le résultat d'un calcul asynchrone, ce qui n'était pas facilement possible avec l'interface Runnable

Pour lancer un calcul de façon asynchrone

Etape 1 Créer une classe A qui implémente Callable et donne une réalisation à la méthode call. La méthode call implémente le calcul C qui sera effectué et rend un résultat.

Etape 2. Appeler la méthode submit d'une classe B  implémentant l'interface ExecutorService en passant comme paramètre une instance de la classe A. La méthode submit rend comme résultat un objet F, instance de Future. Cet objet contiendra le résultat du calcul C. Le thread qui exécute le calcul C est pris dans un pool de threads (fonctionnement de la fabrique Executor).

Etape 3. Attendre que le résultat soit disponible en appellant  la méthode get de l'objet Future.

Liens

» Glossaire programmation concurrente et Java