Ich habe eine Situation, in der mehrere Threads einen einzelnen BlockingQueue durch Aufruf von take() abrufen werden. Folgendes möchte ich wissen:BlockingQueues und Thread-Zugriffsreihenfolge
Wenn mehrere Threads darauf warten, dass die Warteschlange ein Element empfängt, erhalten sie Vorrang, wenn sie Elemente aus der Warteschlange in der Reihenfolge abholen, in der sie ihre Aufrufe() oder ausgeführt haben Wird die Reihenfolge, in der die Threads Dinge aus der Warteschlange nehmen, willkürlich sein?
Danke!
Hinweis: Ich habe in der Vergangenheit meine eigenen Implementierungen für diese Art von Dingen geschrieben, aber ich frage mich, ob die BlockingQueue-Implementierungen in Java dies für mich tun würden.
Im Allgemeinen sollte jede Multithread-Anwendung keine Annahmen über die Reihenfolge der Thread-Ausführung treffen. Es gibt Möglichkeiten, um es durchzusetzen, aber die Idee hinter MT-Anwendungen ist, dass es nicht getan werden sollte. – Dariusz
Interessante Frage, ich habe geschrieben und lief ein Programm - es gibt keine feste Reihenfolge. – Tala
[Verwandte Frage] (http://stackoverflow.com/questions/1301691/java-queue-implementations-which-one), die auch Fairness diskutiert. –