私の小さなアプリケーションには、基本的にライターとリーダーの2つのクラスのスレッドがあります。1つのライターに複数のリーダーを割り当てることができます。ライターは、変数に書き込むことでリーダーと対話しchunkBuffer
ます。
さて、ここでスレッドセーフの問題に頭を悩ませることはできませんchunkBuffer
。静的ThreadLocal
変数にを格納しないと、すべてのリーダーが単一のchunkBufferを共有することになります。これは悪いことです。しかし、chunkBufferを静的に格納するThreadLocal
と、ライターは別のスレッドであり、chunkBufferの独自のコピーを取得して書き込みを続けますが、書き込むデータはリーダーに到達しません。ここで何が問題なのか説明してもらえますか?どうもありがとうございます。
編集言い換えると、スレッドサブクラス(ThreadLocalなど)のすべてのインスタンスに対して一意であるが、オンデマンドで他のスレッドからアクセスできるフィールドを作成する方法はありますか?