次のコードの場合、複数のスレッドで実行します。
private static final Map<String, keyinfo> mapKeys = new ConcurrentHashMap<String, keyinfo>();
private static void purgeOldKeys() {
for (Map.Entry<String, keyinfo> key : mapKeys.entrySet()) {
if(key.getValue().createTime + keyCacheTime < getCurrentDBTime())
mapKeys.remove(key);
}
}
シンクロナイザーを回避できますか?
または、すでに削除された要素を削除することは、JavaDoc に従って定義されていないため、シンクロナイザは引き続き必要ですか?