java - Quels sont les scénarios d'utilisation métier spécifiques des classes hautes performances telles que ConcurrentHashMap?
给我你的怀抱
给我你的怀抱 2017-06-28 09:23:10
0
4
1223

Selon la question, quels sont les scénarios d'utilisation métier spécifiques des classes hautes performances comme ConcurrentHashMap ?

HashMap est généralement le plus utilisé lorsque nous écrivons du code, et nous y sommes habitués

Mais il existe d'autres cartes hautes performances en Java, et j'ai l'impression de ne pas les utiliser habituellement

Après une recherche sur Baidu, je n'ai vu que la différence entre HashMap et ConcurrentHashMap

Mais je ne sais pas quels scénarios d'utilisation professionnelle spécifiques utiliseront ces classes

Donc je me sens un peu confus, j'espère que les seniors pourront me donner quelques conseils, merci

给我你的怀抱
给我你的怀抱

répondre à tous(4)
某草草

ConcurrentHashMap est une classe d'outils sous le package java.util.concurrent pour empêcher la concurrence. Pour un usage professionnel, votre propre classe de concurrence peut également implémenter ThreadLocal. . .

Principalement utilisé dans le multi-threading. Les versions antérieures de Java utilisaient des blocs de synchronisation synchronisés, ce qui n'était pas facile à résoudre des problèmes tels que le verrouillage et la libération. Maintenant que tout est officiellement écrit en Java, il suffit de regarder le multi-threading. . .

Par exemple, dans un scénario commercial, les informations sur le personnel d'une entreprise sont stockées dans une base de données multithread. Si vous utilisez java.util.List, les données de chaque thread seront incohérentes. Dans ce cas, vous devez utiliser un outil de concurrence. classe. La principale chose à noter est que lors de la lecture des données , cela n’a pas d’importance. . .

学霸

ConcurrentHashMap est spécialement conçu pour l'accès par plusieurs threads. Par exemple :

// 在线用户管理类
public class UserManager {
    private Map<String, User> userMap = new ConcurrentHashMap<>();
    
    // 当用户登入时调用
    public void onUserSignIn(String sessionId, User user) {
        this.userMap.put(sessionId, user);
    }
    
    // 当用户登出或超时时调用
    public void onUserSignOut(String sessionId) {
        this.userMap.remove(sessionId);
    }
    
    public getUser(String sessionId) {
        return this.userMap.get(sessionId);
    }
}

Lorsque de nombreux utilisateurs se connectent et se déconnectent en même temps, onUserSignIn()onUserSignOut() de nombreux fils de discussion appellent en même temps.

黄舟

Merci pour l'invitation.

Il faut d'abord savoir :

  • L'exécution d'opérations sur un objet non protégé dans plusieurs threads entraînera un statut incohérent pour tout le monde.

  • Vous pouvez ouvrir plusieurs fils de discussion pour mettre et supprimer un hashMap ordinaire, à condition que ce soit sous certaines conditions, comme que les éléments à l'intérieur répondent à certaines exigences, supérieurs ou égaux à un certain nombre, etc.

  • ConcurrentHashMap est la carte simultanée fournie dans le package de concurrence jdk, qui peut efficacement empêcher l'incohérence de copie d'objet lorsque plusieurs threads exploitent un objet.

Vous pouvez rechercher la scène sur Baidu.

巴扎黑

Inutile de dire la différence, vous devriez déjà les connaître.

Afin de garantir la sécurité des threads, nous utilisons généralement le mot-clé Synchronize. Avec ConcurrentHashMap, vous n'avez plus besoin d'utiliser la lourde méthode Synchronize De plus, ConcurrentHashMap est généralement utilisé dans des situations multithread En savoir plus et écrire moins. Tous les multithreads ne peuvent pas utiliser cette classe d'outils de concurrence.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal