Java Gurus、
現在、頻繁HashMap<String,SomeApplicationObject>に読み取られ、時々変更されるがあり、変更/再ロード中に読み取り操作が返されるという問題がありますが、nullこれは受け入れられません。
これを修正するには、次のオプションがあります。
A.ConcurrentHashMapを使用します
これは最初の選択肢のように見えますが、私たちが話している操作はreload()-という意味でclear()、その後に。が続きreplaceAll()ます。したがって、Mapがpostclear()およびprereplaceAll()で読み取られた場合、nullが返されますが、これは望ましくありません。私がsynchronizeこれで問題が解決しない場合でも。
B.ReentrantReadWriteLockに基づいて別の実装を作成します
Write Lock操作前に取得を作成する場所reload()。これはより適切に思えますが、これにはすでに何かが利用可能であるに違いないと感じており、車輪の再発明をする必要はありません。
最善の方法は何ですか?
編集そのような機能を備えたコレクションはすでに利用可能ですか?