Heim >Java >JavaBase >Lernen Sie die Verwendung von Java-Sperren mit Netty

Lernen Sie die Verwendung von Java-Sperren mit Netty

coldplay.xixi
coldplay.xixinach vorne
2021-01-04 10:04:242250Durchsuche

Java-Basis-Tutorial In der Kolumne erfahren Sie, wie Sie Java-Sperren mit Netty lernen

Reduzieren Sie die Granularität Lernen Sie die Verwendung von Java-Sperren mit Netty

2 Die Größe des Sperrobjekts selbst

Reduzieren Sie den Speicherplatzverbrauch

    Atomic long V.S long
  • Ersteres ist ein Objekt, einschließlich eines Objektheaders zum Speichern von Hashcode, Sperren und andere Informationen. Es belegt 16 Bytes unter einem 64-Bit-System. Unter einem 64-Bit-System:
    volatile long= 8 Bytes
    AtomicLong = 8 Bytes (volatile long) + 16 Bytes (Objektheader) + 8 Bytes (Referenz). = 32 Bytes
  • Sparen Sie mindestens 24 Bytes!

Also Atomic*-Objekte => Flüchtiger Primärtyp + Statischer Atomic*FieldUpdater

    3 Sperrgeschwindigkeit

  • Verbessern Sie die Parallelität

  • LongCounter
  • Wird für Funktionen wie verwendet als Aufzeichnen der Anzahl der Speicherzuordnungsbytes von.
    Unter hoher Parallelität: java.util.concurrent.atomic.AtomicLong => java.util.concurrent.atomic.LongAdder

Fazit: Messen und nutzen Sie die neuesten JDK-Funktionen zeitnah.

Wählen Sie je nach Bedarf verschiedene aus verschiedene Situationen Gleichzeitige Paketimplementierung

JDK< 1.8 berücksichtigt ConcurrentHashMapV8 (die Version von ConcurrentHashMap in jDK8)

4 Wählen Sie verschiedene Parallelitätsklassen für verschiedene Szenarien

Ändern Sie je nach Bedarf

C Verliere und warte auf das Shutdown-Event-Executor (Event Executor): Object.wait/ notify => CountDownLatch


Queue, die für das Speichern von Aufgaben in der Nio-Event-Schleife verantwortlich ist

Jdks LinkedBlockingQueue (MPMC, mehrere Produzenten und mehrere Konsumenten) –> jctools' MPSC io .netty.util.internal.PlatformDependent.Mpsc#newMpscQueue(int):



  • 5 Der Wert der Sperre

  • Wenn Sie es nicht verwenden können, verwenden Sie es nicht
  • Netty Anwendungsszenario: teilweise seriell + insgesamt parallel> - Warteschlangen- und Mehrfach-Thread-Modus:

    Reduzieren Sie Benutzerentwicklungsschwierigkeiten, einfache Logik, verbessern Sie die Verarbeitungsleistung.
    Vermeiden Sie zusätzlichen Overhead wie Kontextwechsel und Parallelitätsschutz durch Sperren.

    Vermeiden Sie die Verwendung von Sperren: Verwenden Sie ThreadLocal um Ressourcenkonflikte zu vermeiden, zum Beispiel Nettys leichtgewichtige Thread-Pool-Implementierung

Das obige ist der detaillierte Inhalt vonLernen Sie die Verwendung von Java-Sperren mit Netty. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen