3
我想保持暫時受阻用戶位於一個單一個HashMap:枚舉上的Java單例和ConcurrentHashMap。線程安全問題?
public enum BlockedUsersRepository {
REPOSITORY;
private final ConcurrentMap<String, User> blockedUsers = new ConcurrentHashMap<String, User>();
/* Static 'instance' method */
public static BlockedUsersRepository getInstance() {
return REPOSITORY;
}}
一個用戶進入地圖的一些不成功的嘗試輸入卡號後。我這樣做,通過推出從用戶類以下方法:
public void addBlockedUser(User user) {
blockedUsers.put(user.getEmail(),user);
}
public void removeBlockedUser(User user) {
blockedUsers.remove(user.getEmail());
}
的問題是:我該承擔線程安全ENOUGH措施?我如何模擬在終端中對地圖的併發訪問,以確保它真正起作用或失敗?這是否是一種合適的方法,因爲我擔心這是一種蹩腳的行爲,因爲singlet的作用就像是一個全局變量,可以被許多User實例訪問/修改。我對Java的併發性感到陌生,並要求你寬容。謝謝。
我最擔心的是線程安全問題,其他問題並不重要,因爲它只是一個教育項目。非常感謝支持。 –