【发布时间】:2012-03-21 00:57:29
【问题描述】:
我有一个关于 HashMap 同步的问题。背景是我正在尝试实现一种简单的蛮力检测方法。我将使用一个以用户名作为键的映射,用于保存用户的失败登录尝试次数。如果登录失败,我想做这样的事情:
Integer failedAmount = myMap.get("username");
if (failedAmount == null) {
myMap.put("username", 1);
} else {
failedAmount++;
if (failedAmount >= THRESHOLD) {
// possible brute force detected! alert admin / slow down login
// / or whatever
}
myMap.put("username", failedAmount);
}
我现在想到的机制非常简单:我会跟踪一整天,然后在午夜或类似的时候 clear() HashMap。
所以我的问题是: 我可以为此使用的最好/最快的地图实现是什么?我需要一个完全同步的 Map (Collections.sychronizedMap()) 还是一个 ConcurrentHashMap 就足够了?或者甚至只是一个普通的 HashMap?我想如果一些增量滑过,这不是什么大问题?
【问题讨论】:
标签: java synchronization synchronized