In meiner kleinen Anwendung habe ich Threads von zwei Klassen - im Wesentlichen Schreiber und Leser. Einem Writer können mehrere Leser zugewiesen werden. Ein Writer interagiert mit seinen Lesern, indem er in deren chunkBuffer
variabel.
Nun, ich kann nicht ganz meinen Kopf um den Thread Sicherheit Problem hier: wenn ich nicht speichern die chunkBuffer
in einer statischen ThreadLocal
Variable, teilen sich alle Leser einen einzigen chunkBuffer, was schlecht ist. Aber wenn ich den chunkBuffer in einer statischen ThreadLocal
wird der Writer, der ein separater Thread ist, seine eigene Kopie des chunkBuffers erhalten und weiter in diesen schreiben, während keine der von ihm geschriebenen Daten die Leser erreichen werden. Können Sie mir erklären, was hier das Problem ist? Ich danke Ihnen vielmals.
編集部 Mit anderen Worten, gibt es eine Möglichkeit, ein Feld zu erstellen, das für jede einzelne Instanz einer Thread-Unterklasse (wie ThreadLocal) eindeutig ist, aber bei Bedarf von anderen Threads aufgerufen werden kann?