【发布时间】:2016-07-16 08:47:53
【问题描述】:
我想将暂时被阻止的用户保留在位于单例中的 HashMap 中:
public enum BlockedUsersRepository {
REPOSITORY;
private final ConcurrentMap<String, User> blockedUsers = new ConcurrentHashMap<String, User>();
/* Static 'instance' method */
public static BlockedUsersRepository getInstance( ) {
return REPOSITORY;
}}
用户在多次尝试输入卡号失败后进入地图。我通过从 User 类启动以下方法来做到这一点:
public void addBlockedUser(User user) {
blockedUsers.put(user.getEmail(),user);
}
public void removeBlockedUser(User user) {
blockedUsers.remove(user.getEmail());
}
问题是:我是否采取了足够的线程安全措施?如何在终端中对地图的并发访问进行建模,以确保它确实有效或失败?这是否是一种合适的方法,因为我担心它很蹩脚,因为单音扮演的角色有点像一个全局变量,可由多个用户实例访问/修改。我是 Java 并发的新手,请您宽容。谢谢。
【问题讨论】:
标签: java concurrency enums singleton