On souhaite implanter un
Exchanger qui permet d'échanger deux valeurs
entre deux threads.
L'idée est qu'une première thread va envoyer une valeur à l'
Exchanger
en utilisant la méthode
exchange, celui-ci va bloquer la thread qui a fait
appel à la méthode
exchange et attendre (on suppose qu'il n'y a que 2 threads et que chacune appelle
exchange exactement une fois).
Lorsque une seconde thread fait elle aussi un appel à la méthode
exchange
avec une seconde valeur, l'appel retourne la première valeur envoyée et
la première thread est dé-bloquée de son appel à
exchange en retournant
la seconde valeur (attention, les valeurs peuvent être nulles).
En fait, la classe
Exchanger existe déjà en Java
(dans le package
java.util.concurrent), et voici un exemple de code l'utilisant.
On se propose donc de ré-implanter cette classe.