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.
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 et son appel à
exchange en retournant
la seconde valeur.
En fait, la classe
Exchanger existe déjà en Java
(dans le package
java.util.concurrent), et voici un code d'exemple
On se propose donc de ré-implanter cette classe.