Synchronisations et communications entre Threads Synchronisation

1
Synchronisations et communications entre Threads
IFT 3880-IFT 6835 APPLICATIONS DISTRIBUÉES
Par Laurent Magnin
Cours IFT 3880 & 6835, tous droits réservés / 2
Synchronisation des Threads
Méthode yield()
Méthode sleep()
Différences de priorité [EThread5]
Blocs synchronisés [EThread6*]
synchronized(objet){…}
Synchronized void myMethod{…}
Synchronisation sur l’objet appelant la
méthode
wait() - notify() & notifyAll() [EThread71]
join() [EThread72]
Cours IFT 3880 & 6835, tous droits réservés / 3
Cycle de vie des Threads
1. thread makes wait() call
2. thread tries to run in synchronized region but cannot acquire lock
3. thread has been moved off the blocked queue by notify() or
notifyAll().
4. thread has been woken up by some other thread eitherleaving
the synchronized regionmaking a wait call
5. thread does an I/O call (including sleep)
6. thread completes I/O call (including finishing sleep time)
7. thread chosen to run
8. thread yields CPU to some other ready thread either by
explicit yield() call
preempted by Java kernel
Cours IFT 3880 & 6835, tous droits réservés / 4
Dangers liés à l’utilisation de Threads
Absence de synchronisations
Ordre des opérations incohérent
Problème d’accès aux ressources
Deadlocks (étreintes mortelles)
A attend B, lequel attend C, lequel attend A
Cours IFT 3880 & 6835, tous droits réservés / 5
Communication entre Threads
Variables synchronisées
Exemple Producteur / Consommateur [EThread9*]
Par files de messages (Stream)
Local (EThread8)
Sockets (prochain cours)
Cours IFT 3880 & 6835, tous droits réservés / 6
Lecture de Streams / Char
2
Cours IFT 3880 & 6835, tous droits réservés / 7
Écriture de Streams / Char
Cours IFT 3880 & 6835, tous droits réservés / 8
Lecture de Streams / Byte
Cours IFT 3880 & 6835, tous droits réservés / 9
Écriture de Streams / Byte
Cours IFT 3880 & 6835, tous droits réservés / 10
Utilisation cumulée de filtres de Stream
FilterInputStream(InputStream)
Cours IFT 3880 & 6835, tous droits réservés / 11
The Concurrency Utilities
Package java.util.concurrent
Introduit avec Java 1.5
Utilitaires basés sur les threads
Exemples (03_Java5_.zip) tirés du livre “Java : the
complete reference, J2SE 5th edition” par Schildt,
herbert (disponible sous forme électronique à la
bibliothèque)
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !