Les Threads
Introduction
• Exemple : si vous devez saisir des données du clavier (un
utilisateur absent), pourquoi bloquer le code qui ne dépend pas
des données?
• Solution : mettre les entrées sorties et le code qui en dépends
dans un Thread. Pendant l’attente des données, l’autre programme
peut s’exécuter.
2
Définition
• Thread : séquence autonome d’exécution d’instructions au sein d’un
programme.
• Donne l’illusion de parallélisme de l’exécution des bouts de
programmes.
• Délivre un parallélisme réel sur une machine multiprocesseur.
3
Définition
• Thread (processus léger) : unité d’exécution rattachée à un processus,
chargée d’exécuter une partie du processus.
• Le terme Thread (fil en anglais) signifie un fil ou chemin d’exécution,
lightweight process (lwp) ou processus léger (par opposition au
processus classique créé par fork, qualifié de processus lourd).
4
Tous les Threads partagent le même espace mémoire au sein de la
machine virtuelle.
•Ils peuvent accéder à tous les objets publics
•Ils peuvent modifier tous les objets publics
5
Threads et processus
Contrairement aux processus, les threads sont légers :
• Ils partagent le même espace d’adressage.
• Ils existent au sein du même processus (lourd) .
• La communication inter-thread occasionne peu de surcharge.
• Le passage contextuel d’un thread à un autre est peu coûteux.
6
Threads et processus
• Le multitâches de processus n’est pas sous le contrôle de
l’environnement d’exécution java. Par contre, il y a un mécanisme
interne de gestion multithreads.
• Le peu de surcharge occasionné par le système de multithreads de
Java est spécialement intéressant pour les applications distribuées.
Par ex., un serveur multitâches (avec une tâche par client à servir)
7
Pourquoi utiliser les Threads?
• Certains bouts de code sont indépendants (pas de relation d’ordre)
donc gain de clarté et de rapidité.
• Des application peuvent nécessiter un parallélisme
• Programme distribué
• Chronométrage d’un programme
8
Création des Threads
Deux méthodes, un point commun :
Ecrire une méthode run() qui fait ce que doit faire le thread.
• Méthode 1 : Dériver une classe de Thread.
• Méthode 2 : Implémenter l’interface Runnable.
9
La classe Thread
10
La classe Thread
11
L’interface Runnable
12