- 265 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 01:39:06 ]
- >>262
やっぱり理解不足。 putもgetもsynchronized (myMap) { } にしておく、が正解。 getだからといってつけないと、痛い目にあう(ヒント:Atomic性) >Map の実装を ConcurrentHashMap にする 正しいといえば正しい。 だけど、並行処理で品質を高めるには1箇所で必要最低限の同期を取るのがポイント。 例えばMapとなにか別の要素もあわせて同期を取りたいとする。 すると、Mapで同期をとってさらにラップクラスで同期を調整して・・・と複雑になる。 そんな場合は同期を取るクラスは1箇所にしたほうが楽。 また、全てのメソッドを同期を取る必要があるか?という点も重要。 とはいえ、そのような要素がなければ簡単に実現できるConcurrentHashMap を使うのは正しい(シンプルこそ正義)。 予断だが、外部にさらしてもmap = null では何の影響もないぞw map.clear() 等はマズイのでオシマイには変わらないけど。
|

|