mardi 15 février 2011

Un pool de threads - Executors-


Raison pour utilisée un pool de threads:
*Si votre programme crée un grand nombre de threads courts, il devra plutôt utiliser un pool de threads.
*La création d’un grand nombre de threads peut considérablement dégrader les performances, voire bloquer la machine virtuelle. Dans ce cas de figure utilisez un pool de threads "fixe" qui limite le nombre total de threads simultanés.
la méthode utilisé est :

newFixedThreadPool :Le pool contient un jeu fixe de threads. Elle construit un pool de threads de taille fixe.
Si le nombre de tâches envoyées est supérieur au nombre de threads inactifs, les tâches non servies sont placées dans une queue. Elles sont exécutées à la fin des autres tâches.
Cette méthodes renvoie un objet de la classe ThreadPoolExecutor qui implémente l’interface ExecutorService.
Vous pouvez ensuite envoyer  un Runnable ou un Callable à un ExecutorService de l’une des manières suivantes :
Future submit(Runnable task)
Future submit(Runnable task, T result)
Future submit(Callable task)

Lorsque vous avez terminé avec un pool de connexion, appelez shutdown. Cette méthode lance la
séquence de fermeture du pool.

Voici, en bref, ce qu’il faut faire pour utiliser un pool de connexion :
1. Appelez la méthode statique  newFixedThreadPool de la classe Executors.
2. Appelez submit pour envoyer des objets Runnable ou Callable.
3. Pour pouvoir annuler une tâche ou si vous envoyez des objets Callable, restez sur les objets Future renvoyés.
4. Appelez shutdown lorsque vous ne voulez plus envoyer de tâches.

Exemple d'application : (Voir la vidéo demo , directement sur le blog)



ExecutorService: gère la gestion des Threads d'une manière optimale en arrière plan.


Exemple :

ExecutorService service = Executors.newFixedThreadPool(10)

Aucun commentaire:

Enregistrer un commentaire

to criticize, to improve