Après avoir lu ton dernier post Logan, je me suis dit bêtement : Je n'ai qu'à appeler notify() deux fois de suite comme ça je met fin au wait() et au join().
Ça fonctionne, le tri redevient opérationnel mais c'est sale.
J'utilise aussi tout le temps les Threads en implémentant Runnable mais j'ai tout de même trouvé intéressant d'utiliser une autre façon de faire.
J'ai repris le tout en version avec implémentation de Runnable et ça fonctionne.
Tout vient donc du fait d'appeler wait() et notify() sur une instance de Thread car dans mon code j'ai tout laissé tel quel, le synchronized(this), le .join() sur le thread et this.wait() et this.notify().
wait() et notify() s'appliquent donc sur un Runnable (this est ici notre Runnable) et non plus sur un Thread.
On peut donc notify() un Runnable d'un Thread sur lequel on a fait un join().
De plus le bloc synchronized(this) concerne le Runnable et plus une instance de Thread donc ça fonctionne.
Ai-je tout compris ?
Partager