Maison > Java > JavaBase > Apprenez à utiliser les verrous Java avec Netty

Apprenez à utiliser les verrous Java avec Netty

coldplay.xixi
Libérer: 2021-01-04 10:04:24
avant
2244 Les gens l'ont consulté

Tutoriel de base JavaLa colonne présente comment apprendre les verrous Java avec Netty

Apprenez à utiliser les verrous Java avec Netty

Recommandé (gratuit) : Tutoriel de base Java

1 Verrouiller les objets et la portée

  • Réduire la granularité

2 La taille de l'objet verrouillé lui-même

  • Réduire l'espace utilisation

    Atomic long V.S long
    Le premier est un objet, comprenant un en-tête d'objet pour enregistrer le hashcode, le verrou et d'autres informations. Il occupe 16 octets sous un système 64 bits. -système de bits :
  • volatile long= 8 octets
  • AtomicLong = 8 octets (volatile long) + 16 octets (en-tête d'objet) + 8 octets (référence) = 32 octets
    Enregistrez au moins 24 octets !

Objets donc Atomic* => Type primaire volatile + Static Atomic*FieldUpdater

3 Vitesse de verrouillage

Améliorer la simultanéité

Améliorer la simultanéité

LongCounter

est utilisé pour des fonctions telles que l'enregistrement du nombre d'octets d'allocation de mémoire.

Sous haute concurrence : java.util.concurrent.atomic.AtomicLong => java.util.concurrent.atomic.LongAdder

Conclusion : mesurez et utilisez les dernières fonctionnalités du JDK dans un en temps opportun

Selon différentes situations, choisissez différentes implémentations de packages simultanées

JDK< 1.8 Considérez ConcurrentHashMapV8 (la version de ConcurrentHashMap dans jDK8)

4 Choisissez différentes classes de concurrence pour différents scénarios

  • Modifiez en fonction des besoins



    Fermez et attendez l'exécuteur de l'événement d'arrêt ( Event Executor) :

    Object.wait/ notify =》 CountDownLatch



  • File d'attente responsable du stockage des tâches dans la boucle d'événements Nio LinkedBlockingQueue de Jdk (MPMC, multi-producteur Plusieurs consommateurs) -> MPSC de jctools
    io.netty.util.internal.PlatformDependent.Mpsc#newMpscQueue(int):

    5 La valeur du verrouillage


    Si vous pouvez l'utiliser, ne l'utilisez pas

    Scénario d'application Netty : série partielle + parallèle global> mode multi-thread :

    Réduisez les difficultés de développement des utilisateurs, simplifiez la logique et améliorez les performances de traitement
    Évitez la surcharge supplémentaire liée au changement de contexte et à la protection de la concurrence causée par les verrous

    Évitez d'utiliser des verrous : utilisez ThreadLocal pour éviter les ressources conflit, tel que la mise en œuvre du pool de threads Netty Lightweight

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:csdn.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal