Pour l'exercice 2 (moniteurs en Java), les étudiants peuvent utiliser Tester.java pour tester le
code de leur classe. En principe, le tout devrait pouvoir se compiler comme ceci:

javac -classpath . ReaderWriter.java
javac -classpath . Tester.java

L'application Tester se lance ensuite avec 

java -classpath . Tester

L'application démarre 10 threads (lecteurs ou rédacteurs) en utilisant le 
moniteur dans ReaderWriter. Tester affiche ensuite les entrées et sorties 
de la section critique, ce qui permet à l'étudiant de lancer quelques 
tests pour voir si son code ne marche pas (sections critiques qui se 
chevauchent, interblocages). Les opérations de lecture/écriture sont 
'simulés' par des attentes entre 0 et 5 secondes.

On a évidemment "Solution correcte => L'exécution de Tester sera 
correcte", par contre, une exécution correcte de Tester n'implique pas 
forcément que la solution est correcte.

Tester permet également de se faire une idée quant à la propriété de 
"priorité égale" de la solution. L'ordre d'arrivée des processus est
donné par les "x waiting for critical section" (x: numéro du processus).
L'ordre de ces "x waiting..." devrait ensuite se retrouver dans les
"READER/WRITER (x) in critical section" (ceci n'est toutefois pas garanti,
car si un processus se fait interrompre juste après avoir écrit 
"x waiting for critical section", il pourrait se faire dépasser par un
autre processus).
