TPS à faire
http://nadir.is.online.fr/cours/java/tp_java_05.html
Deux type de threads coexistent, les premier sont les producteurs qui remplissent une file, les seconds la vide. La file étant de taille limitée. nous avons la situation symétrique suivante :
Un producteur doit attendre que la file ne soit plus pleine avant de produire.
Un consommateur doit attendre que la file ne soit plus vide avant de consommer.
Les opérations sur la file doivent être synchronisées (taille, ajout, suppresion).
Question :
Écrire une classe exécutable producteur qui va creer des jobs 1,2,3,... et chercher à les placer dans la file d’attente. Un objet de la classe producteur répond aux spécifications suivantes :
Il construit à partir de la file d’attente (une liste appelée nosJobs) et d’un idenfiant.
la classe implemente une méthode prod permettant d’ajouter un job à la file, cette méthode doit vérrouiller la nosJobs.
si quand prod est invoquée la file nosJobs est pleine le thread doit attendre (wait) que la file ne soit plus pleine.
Ensuite le thread peut ajouter un job à la file.
Enfin quand le producteur réalise une production il doit informer les threads en attente que la file d’attente a changé (notify).
Écrire la classe consommateur, qui est analogue mais attend sur une file vide, dépile un job et effectue un notify.