Java では常にスレッドについて意識する必要がある。 Map にキャッシュデータを入れたい場合、HashMap を使ってはいけない。HashMap はスレッドセーフではないからだ。 synchronized で保護してもいいが、いちいちするのも面倒だし、問題が起きがちなんで、 のように、Collections.synchronizedMap() でよしなにする方法がある。この方法でラップすると、メソッドアクセスの際に synchronized がかかるので安全になる。 ConcurrentHashMap と HashMap HashMap をマルチスレッドからアクセスする場合、get メソッドを使った場合でも synchronized をかけざるをえず、パフォーマンスが出ない。 ConcurrentHashMap ならば、取得時にはロックがかからないので、キャッシュには Concurre