【初心者】Java質問・相談スレッド115【歓迎】at TECH
【初心者】Java質問・相談スレッド115【歓迎】 - 暇つぶし2ch264:デフォルトの名無しさん
08/05/18 01:32:46
>>260
>・ラップするクラスには、put と get のメソッドを作る 

putとgetだけを提供する場合、

>if ( list.contains(x) == false ) list.add(x); 

のような問題は相変わらず回避できないことに注意。
まぁ用途次第かもしれないので、わかってればかまわない。

>・HashMap にしておき、ラッパクラスの put メソッドは、内部で synchronized (myMap) { } ブロックで囲み、 
>get メソッドは synchronized をつけなければ、取得時の同時並行性は確保できると思いました。

それはだめ。
変更(put)中のデータを参照(get)すると不正な結果を得たり死んだりする可能性がある。
もっと不可解なことが起きる可能性もあるけど、詳細は件の本でも読んでください。
要するにgetにもsynchronizedは必要。

同期の対象がMap1個で済む状況なら、ConcurrentHashMapは便利。
2個以上のMapを同時に更新しなければならない場合とかには無力。


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch