Threads
Mots clés
Thread, Runnable, synchronized, notify
Verrouillage
Les trois règles de Doug Lea :
- Toujours verrouiller lors de la mise à jour de variables
- Toujours verrouiller lors de l'accès à des
variables mutables
- Ne jamais verrouiller lors de l'appel d'une méthode sur un
autre
objet
Courbes
Cet exemple dessine deux courbes en simultané grace à
deux threads. Il est composé de deux fichiers : Courbe.java et CourbeApplication.java.
A noter l'utilisation d'une poignée
dans la classe Courbe : la méthode abstraite fonction(double x), et de
java2D pour tracer les courbes.
Une deuxième version plus sophistiquée (TestMemoire.java) utilise
une mémoire partagée (Memoire.java) entre un
thread de lecture (Lecture.java) et un thread
d'écriture (Acquisition.java).
Particle
Cet exemple illustre les trois règles de Doug Lea. Il est
composé de 3 fichiers : ParticleFrame.java, Particle.java et ParticleComponent.java.
Une deuxième version fait que le déplacement des
particules est simplement interrompu et non remis à zéro
comme dans la version 1 : (ParticleFrame.java, Particle.java et ParticleComponent.java)
PingPong
Les quatre exemples de Ping et Pong : PingPong1.java et PingPong1b.java (Thread vs.
Runnable), PingPong2.java et PingPong3.java (utilisation
de synchronized).
Producteur/Consommateur
Un exemple de producteur/consommateur entre plusieurs threads avec un
tampon partagé : Consommateur.java,
Producteur.java, ProducteurConsommateur.java,
Tampon.java.