Threads 1
Threads 1
Threads 1
Les Threads
Terminologie
2
Intérêts:
3
Introduction
● Les threads ou “processus légers” sont des unités d'exécution autonomes qui peuvent
effectuer des tâches, en parallèle avec d'autres thread.
● Le flot de contrôle d'un thread est séquentiel. Plusieurs threads peuvent être associés à
un “processus lourd”.
● En Java, le processus lourd est la JVM.
● Les threads coopèrent entre eux en échangeant des valeurs par la mémoire commune
(du processus lourd)
● Grâce au “multi-thread”, même sur une machine monoprocesseur, l'ordinateur donne
l'impression d'effectuer plusieurs tâches en parallèle.
Introduction
1
2
Interface Runnable
Code Lanceur ( Main par exemple)
Simulation
1
3
Classe Thread
● Classe MyThread héritant de la classe Thread ( Thread implémente Runnable)
1
4
Classe Thread
Code Lanceur ( Main par exemple)
Simulation
1
5
Classe Anonyme
tout est dans le Code Lanceur
1
6
La class Thread
● Créer une instance de type Thread dont l'implémentation de la méthode run() va
contenir les traitements à exécuter.
La class Thread
● Avec les méthodes précédentes, Pour chaque tâche il faut créer un nouveau Thread.
● La création d’un nouveau Thread est coûteuse => diminue les performances du
programme.
● Créer un nombre prédéfinie de Threads et réutiliser les thread existants.
ThreadPool & ExecutorService
ExecutorService
● Executors.newFixedThreadPool(int n)
○ Créer un ExecutorService avec un nombre fixe n de Threads et les garde toujour actives
○ S'ils sont tous occupés les tâches seront placé dans une file d’attente
● Executors.newCachedThreadPool()
○ Pour une nouvelle tâche Il utilise un Threads disponible sinon il crée un nouveau.
○ Si un Thread reste sans tache pour une période(une minute) il sera supprimé automatiquement.
● Executors.newSingleThreadExecutor()
○ Crée un seul Thread pour une exécution séquentielle de plusieur tâches.
ExecutorService