Question

Une question si je peux me permettre.

laisse supposer que mon thread principal crée 3 fils. Ces 3 threads appellent attente () sur un certain objet. Ensuite, le principal fil appelle notifyAll () pour le même objet.

Comment puis-je assurer que thread2, et seulement thread2, produit tout thread1 et thread3 simplement ignorer la notification et revenir à l'état d'attente?

En substance, comment puis-je diriger mon avis à un fil choisi?

Si je ne me trompe pas, ce serait tout à fait simple en Java 5. On pourrait créer des conditions différentes et ont le thread principal ne se réunissent que la condition sur laquelle thread2 attend.

Cependant, comment pourrais-je résoudre dans pre5?

Cordialement, Vic

Était-ce utile?

La solution

Il faut noter que les discussions peuvent spontanée suite même sans notify. Donc, vous avez toujours une sorte de condition. La forme générale du code est:

synchronized (lockObj) {
    while (!condition) {
        lockObj.wait();
    }
}

Il peut y avoir des raisons de performance pour réveiller seulement des fils qui font des opérations spécifiques. Pour cela regarder dans java.util.concurrent.locks, mais notez qu'il est un problème de performance pas faire-la-droite-chose question.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top