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 poducteur/consommateur entre plusieurs threads avec un tampon partagé : Consommateur.java, Producteur.java, ProducteurConsommateur.java, Tampon.java.