Ich verwende LinkedBlockingQueue
zwischen zwei verschiedenen Threads. Ein Thread fügt Daten über add
hinzu, während der andere Thread Daten über take
empfängt.Sind die Methoden zum Einfügen und Entfernen von LinkedBlockingQueue sicher?
Meine Frage ist, muss ich den Zugriff auf add
und take
synchronisieren. Ist LinkedBlockingQueue
Methoden einfügen und entfernen Thread sicher?
ist es nicht wirklich. Nein, nicht, wenn Sie nur add und take verwenden, aber wenn Sie eine Massenoperation verwenden würden, müssten Sie sie statt einfach nur "Ja" synchronisieren? Oder lese ich das Dokument falsch? – cproinger
@cproinger, nein, du musst es nie synchronisieren, solange du bereit bist mit 'addAll' umzugehen, das nach dem Hinzufügen einer Teilmenge der Elemente (oder ähnlichem) eine Ausnahme auslöst. Es hängt davon ab, wie Sie Thread-sicher definieren. Sie haben Recht, dass die Bulk-Methoden keine Atomizitätsgarantie haben. –
Ist 'remove' auch threadsicher? – q126y