Threads

Mots clés

Thread, Runnable, synchronizednotify

Verrouillage

Les trois règles de Doug Lea :
  1. Toujours verrouiller lors de la mise à jour de variables
  2. Toujours verrouiller lors de l'accès à des variables mutables
  3. 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.