ich vorübergehend halten will blockiert Benutzer in einer HashMap in Singleton befindet:Java Singleton auf Enum und ConcurrentHashMap. Thread-Sicherheitsprobleme?
public enum BlockedUsersRepository {
REPOSITORY;
private final ConcurrentMap<String, User> blockedUsers = new ConcurrentHashMap<String, User>();
/* Static 'instance' method */
public static BlockedUsersRepository getInstance() {
return REPOSITORY;
}}
Ein Benutzer wird in die Karte immer nach einer Reihe von erfolglosen Versuchen Kartennummer einzugeben. Ich mache es mit den folgenden Methoden von User-Klasse starten:
public void addBlockedUser(User user) {
blockedUsers.put(user.getEmail(),user);
}
public void removeBlockedUser(User user) {
blockedUsers.remove(user.getEmail());
}
Die Frage ist: verpflichten ich GENUG Maßnahmen für Thread-Sicherheit? Wie kann ich den gleichzeitigen Zugriff auf die Karte im Terminal modellieren, um sicherzustellen, dass sie wirklich funktioniert oder fehlschlägt? Ist es überhaupt ein angemessener Ansatz, weil ich befürchte, dass es lahm ist, weil das Singleton eine Rolle einer Art globalen Variable spielt, die durch eine Anzahl von Benutzerinstanzen zugänglich/modifizierbar ist. Ich bin neu in der Nebenläufigkeit in Java und bitte Sie, nachsichtig zu sein. Vielen Dank.
Ich war hauptsächlich besorgt über Thread-Sicherheit, der Rest ist nicht so kritisch, da es nur ein Bildungsprojekt ist. Vielen Dank für die Unterstützung. –