ブックマーク / kechanzahorumon.hatenadiary.com (1)

  • ConcurrentHashMapという選択 - 技術開発日記

    最近「java.util.HashMap」がスレッドセーフじゃないことを知って それについていろいろ調べてみた。 まず、「java.util.HashMap」はスレッドセーフじゃないから、複数スレッドが並行してHashMapにアクセスする場合はハッシュテーブルの破壊とか無限ループ、メモリリークを起きてしまうことがあるみたい。 なんで、その対策としては基的にはHashMapの代わりに以下のようなsynchronizedMapを使うのがいいらしい。 Map map = Collections.synchronizedMap(new HashMap(...)); ただ、このsynchronizedMapについても少し調べてみると、実はこれはこれで問題があるらしく、 Iteratorで要素を取り出すときに同期を保証してくれないから、Mapの要素数が変わったりするとConcurrentModifi

    ConcurrentHashMapという選択 - 技術開発日記
  • 1