Der Sinn harter Arbeit besteht darin, dass Sie in den kommenden Tagen nur Menschen und Dinge sehen werden, die Ihnen gefallen!
Issues und Pull-Requests sind willkommen. Alle Dokumente wurden von mir selbst codiert, wenn Sie sie für gut halten, können Sie sie gerne als Ermutigung und Unterstützung markieren :)
In der gesamten Artikelserie geht es um Java-Parallelität . Zweitens ist dieser Teil in der Praxis sehr schwer zu verstehen. Daher habe ich während des Lernprozesses die Grundkenntnisse in Bezug auf Java-Parallelität aufgezeichnet. Erstens kann ich ein System für mein Wissen aufbauen und hoffe auch, dass es für andere nützlich ist.
Informationen zu Java-Parallelitätsthemen:
(1) Enthält die Grundkenntnisse der Parallelität und jeder Titel verweist auf einen bestimmten Artikel.
(2) Enthält Interviewfragen für die Personalbeschaffung im Herbst. Wenn Sie diese verstehen, können Sie etwas gewinnen (und ich hoffe, dass jeder Ihren Lieblingsjob finden kann :))
(3) Wenn es während des Lesevorgangs hilfreich ist, geben Sie mir bitte einen Daumen nach oben, was eine Ermutigung für meine Beharrlichkeit beim Codieren darstellt.
Hinweis: Bitte geben Sie beim Nachdruck die Originalquelle an, vielen Dank!
Grundkenntnisse
1.1 Vor- und Nachteile der gleichzeitigen Programmierung
Wissenspunkte: (1) Warum Parallelität verwenden? (Vorteile); (2) Nachteile der gleichzeitigen Programmierung;
1.2 Thread-Status und Grundfunktionen
Wissenspunkte: (1) So erstellen Sie einen neuen Thread; (2) Thread-Statuskonvertierung; (4) Daemon-Thread;
Parallelitätstheorie (JMM)
Java-Speichermodell und Pass-Before-Regeln
Wissenspunkte: (1) JMM-Speicherstruktur; (2) Neuordnung;
Schlüsselwort „Parallelität“.
3.1 Lassen Sie Synchronized vollständig verstehen
Wissenspunkte: (1) Verwendung des synchronisierten Mechanismus; (3) synchronisierte Speichersemantik; (6) Sperren-Upgrade-Strategie;
3.2 Damit Sie Volatilität vollständig verstehen
Wissenspunkte: (1) Implementierungsprinzip; (2) Ableitung der Vorher-Beziehung; (3) Gedächtnissemantik;
3.3 Glaubst du, dass du final wirklich verstehst?
Wissenspunkte: (1) Verwendung von (2) endgültigen Neuordnungsregeln; (4) endgültige Referenzen können nicht vom Konstruktor „überlaufen“;
3.4 Zusammenfassung der drei Haupteigenschaften: Atomizität, Ordnung und Sichtbarkeit
Wissenspunkte: (1) Atomarität: synchronisiert, (2) Sichtbarkeit: synchronisiert, flüchtig;
Schließsystem
4.1 Erste Einführung in Lock und AbstractQueuedSynchronizer (AQS)
Wissenspunkte: (1) Vergleich zwischen Sperren und Synchronisierung; (3) Verwendung von AQS zur Implementierung benutzerdefinierter Synchronisierungskomponenten; (5) Von AQS bereitgestellte Vorlagenmethoden;
4.2 Vertiefendes Verständnis von AbstractQueuedSynchronizer (AQS)
Wissenspunkte: (1) Datenstruktur der AQS-Synchronisationswarteschlange; (2) Exklusive Sperre;
4.3 ReentrantLock noch einmal verstehen
Wissenspunkte: (1) Das Implementierungsprinzip der Wiedereintrittssperre (2) Das Implementierungsprinzip der unfairen Sperre; (4) Vergleich zwischen fairer Sperre und unfairer Sperre;
4.4 Detailliertes Verständnis der Lese-/Schreibsperre ReentrantReadWriteLock
Wissenspunkte: (1) Darstellung des Lese- und Schreibstatus; (2) Erfassung und Freigabe von ReadLock (5) Generierung der Bedingungswarteschlange; Anwendungsszenarien
4.5 Detaillierte Erläuterung der Warte- und Signalwarte-/Benachrichtigungsmechanismen der Bedingung
Wissenspunkte: (1) Eigenschaften im Vergleich zum Warte-/Benachrichtigungsmechanismus von Object; (3) zugrunde liegendes Datenstrukturprinzip; 6) Kombination aus Warten und Signal/SignalAll;
4.6 LockSupport-Tool
Wissenspunkte: (1) Hauptfunktionen; (2) Eigenschaften im Vergleich zum synchronisierten Blockierungswecken;
gleichzeitiger Container
5.1 Gleichzeitiger Container ConcurrentHashMap (JDK-Version 1.8)
Wissenspunkte: (1) Schlüsselattribute; (3) beteiligte CAS-Operationen; 8) Ausführungsprozess der Methode zur Größenzählung; (9) Vergleich zwischen Version 1.8 ConcurrentHashMap und früheren Versionen
5.2 CopyOnWriteArrayList des gleichzeitigen Containers
Wissenspunkte: (1) Implementierungsprinzip; (2) Der Unterschied zwischen COW und ReentrantReadWriteLock; (4) Warum es schwache Konsistenz gibt;
5.3 ConcurrentLinkedQueue des gleichzeitigen Containers
Wissenspunkte: (1) Implementierungsprinzip; (2) Datenstruktur; (4) Entwurfsabsicht der verzögerten Aktualisierung von HOPS;
5.4 ThreadLocal des gleichzeitigen Containers
Wissenspunkte: (1) Implementierungsprinzip; (3) Methodenprinzip abrufen; (5) ThreadLocalMap
Ein Artikel, der das ThreadLocal-Speicherverlustproblem ausführlich anhand des Quellcodes erläutert.
Wissenspunkte: (1) ThreadLocal-Speicherleckprinzip; (2) ThreadLocal-Best Practices;
5.5 BlockingQueue des gleichzeitigen Containers
Wissenspunkte: (1) Grundlegende Operationen von BlockingQueue; (2) Häufig verwendete BlockingQueue;
Detaillierte Erläuterung der Implementierungsprinzipien von ArrayBlockingQueue und LinkedBlockingQueue in gleichzeitigen Containern
Thread-Pool (Executor-System)
6.1 Prinzip der Thread-Pool-Implementierung
Wissenspunkte: (1) Warum Thread-Pool verwenden? (2) Ausführungsprozess; (3) Die Bedeutung jedes Parameters des Konstruktors; (4) So schließen Sie den Thread-Pool;
6.2 ScheduledThreadPoolExecutor des Thread-Pools
Wissenspunkte: (1) Klassenstruktur; (2) Gemeinsame Methoden; (3) DelayedWorkQueue;
6.3 Zusammenfassung der Grundfunktionen von FutureTask
Wissenspunkte: (1) Mehrere Zustände von FutureTask; (2) Methode abbrechen; (5) Implementierung der Runnable-Schnittstelle;
Atomare Operationsklasse
7.1 Zusammenfassung der atomaren Operationsklassen im Atompaket in Java
Wissenspunkte: (1) Implementierungsprinzip; (2) Atomarer Update-Array-Typ; (5) Atomarer Update-Feldtyp;
Parallelitätstools
8.1 Im Klartext: Java-Parallelitätstoolklassen – CountDownLatch, CyclicBarrier
Wissenspunkte: (1) CountDownLatch; (2) CyclicBarrier; (3) Vergleich zwischen CountDownLatch und CyclicBarrier
8.2 Java-Parallelitätstoolklassen im Volksmund – Semaphore, Exchanger
Wissenspunkte: (1) Ressourcenzugriffskontroll-Semaphor; (2) Datenaustausch-Austauscher
Parallelitätspraxis
9.1 Ein Artikel, der Ihnen ein umfassendes Verständnis des Produzenten-Konsumenten-Problems ermöglicht
JAVA Concurrency Knowledge Graph
Sie können in ein neues Fenster wechseln, um es zur besseren Anzeige zu vergrößern oder das Originalbild anzuzeigen.
Link zum Originalbild des Wissensgraphen. Wenn es nützlich ist, können Sie es für Ihren eigenen Gebrauch klonen.