Le sens du travail acharné est que dans les jours à venir, vous ne verrez que des gens et des choses que vous aimez !
Les problèmes et les demandes de tirage sont les bienvenus. Tous les documents sont codés par moi-même. Si vous pensez qu'ils sont bons, n'hésitez pas à les marquer pour encouragement et soutien :)
Toute la série d'articles porte sur la concurrence Java . Premièrement, c'est mon propre intérêt. Deuxièmement, cette partie est très difficile à comprendre et est souvent posée lors du processus d'entrevue. Par conséquent, au cours du processus d'apprentissage, j'ai enregistré les connaissances de base liées à la concurrence Java. Premièrement, je peux établir un système pour mes connaissances, et j'espère également qu'il sera utile à d'autres.
À propos des sujets sur la concurrence Java :
(1) Contient les connaissances de base sur la concurrence et chaque titre renvoie à un article spécifique ;
(2) Contient des questions d'entretien pour le recrutement d'automne. Les comprendre vous aidera à gagner quelque chose (et j'espère que tout le monde pourra trouver votre emploi préféré :) )
(3) Pendant le processus de lecture, si cela est utile, merci de me donner un coup de pouce, ce qui est un encouragement pour ma persévérance dans le codage.
Remarque : Veuillez indiquer la source originale lors de la réimpression, merci !
connaissances de base
1.1 Avantages et inconvénients de la programmation simultanée
Points de connaissance : (1) Pourquoi utiliser la concurrence ? (Avantages) ; (2) Inconvénients de la programmation simultanée ; (3) Concepts déroutants ;
1.2 État du thread et opérations de base
Points de connaissance : (1) Comment créer un nouveau thread ; (2) Conversion de l'état du thread ; (3) Opérations de base des threads ;
Théorie de la concurrence (JMM)
Modèle de mémoire Java et règles d'occurrence avant
Points de connaissance : (1) structure de la mémoire JMM ; (2) réorganisation (3) règles qui se produisent avant ;
Mot-clé de concurrence
3.1 Vous permet de bien comprendre Synchronisé
Points de connaissance : (1) Comment utiliser le mécanisme de surveillance synchronisé ; (3) la relation synchronisée se produit avant ; (4) la sémantique de la mémoire synchronisée (5) la stratégie de mise à niveau du verrouillage ;
3.2 Vous permet de bien comprendre volatile
Points de connaissance : (1) Principe de mise en œuvre ; (2) Dérivation de la relation qui se produit avant (3) Sémantique de la mémoire (4) Mise en œuvre de la sémantique de la mémoire ;
3.3 Pensez-vous avoir vraiment compris la finale ?
Points de connaissance : (1) Comment utiliser ; (2) règles de réorganisation finale ; (3) principe de mise en œuvre finale (4) les références finales ne peuvent pas « déborder » du constructeur (cette évasion) ;
3.4 Résumé de trois propriétés majeures : atomicité, ordre et visibilité
Points de connaissance : (1) Atomicité : synchronisée ; (2) Visibilité : synchronisée, volatile (3) Ordre : synchronisé, volatile ;
Système de verrouillage
4.1 Première introduction à Lock et AbstractQueuedSynchronizer (AQS)
Points de connaissance : (1) Comparaison entre Lock et synchronisé ; (2) Intention de conception AQS (3) Comment utiliser AQS pour implémenter des composants de synchronisation personnalisés (4) Méthodes remplaçables fournies par AQS ;
4.2 Compréhension approfondie de AbstractQueuedSynchronizer (AQS)
Points de connaissance : (1) Structure des données de la file d'attente de synchronisation AQS (2) Verrouillage exclusif (3) Verrouillage partagé ;
4.3 Comprendre à nouveau ReentrantLock
Points de connaissance : (1) Le principe de mise en œuvre du verrouillage réentrant ; (2) Le principe de mise en œuvre du verrouillage équitable (3) Le principe de mise en œuvre du verrouillage injuste ; (4) Comparaison entre le verrouillage équitable et le verrouillage injuste ;
4.4 Compréhension approfondie du verrouillage en lecture-écritureReentrantReadWriteLock
Points de connaissance : (1) Comment représenter l'état de lecture et d'écriture ; (2) Acquisition et libération de WriteLock ; (3) Acquisition et libération de ReadLock (4) Stratégie de dégradation du verrouillage ; Scénarios d'application
4.5 Explication détaillée des mécanismes d'attente de condition et de signal d'attente/notification
Points de connaissance : (1) Caractéristiques comparées au mécanisme d'attente/notification de l'objet ; (2) Méthodes correspondant au mécanisme d'attente/notification de l'objet (3) Structure de données sous-jacente (4) Principe d'implémentation de Signal/signalAll ; 6) Combinaison de wait et signal/signalAll ;
4.6 Outil LockSupport
Points de connaissance : (1) Fonctions principales ; (2) Caractéristiques par rapport au réveil bloquant synchronisé ;
conteneur simultané
5.1 Conteneur simultané ConcurrentHashMap (JDK version 1.8)
Points de connaissance : (1) attributs clés ; (2) classes internes importantes ; (3) opérations CAS impliquées (4) méthodes de construction ; (6) processus d'exécution d'obtention (7) ; 8) Processus d'exécution de la méthode de comptage de taille ; (9) Comparaison entre la version 1.8 ConcurrentHashMap et les versions précédentes ;
5.2 CopyOnWriteArrayList des conteneurs simultanés
Points de connaissance : (1) Principe de mise en œuvre ; (2) La différence entre COW et ReentrantReadWriteLock ; (3) Scénarios d'application (4) Pourquoi il y a une faible cohérence (5) Inconvénients de COW ;
5.3 ConcurrentLinkedQueue du conteneur simultané
Points de connaissance : (1) Principe de mise en œuvre ; (2) Structure des données (3) Méthode de base (4) Intention de conception de la mise à jour retardée de HOPS ;
5.4 ThreadLocal du conteneur simultané
Points de connaissance : (1) Principe de mise en œuvre ; (2) Principe de la méthode Set (3) Principe de la méthode Get (4) Principe de la méthode Remove ;
Un article qui explique en profondeur le problème de fuite de mémoire ThreadLocal à partir du code source.
Points de connaissance : (1) Principe de fuite de mémoire ThreadLocal (2) Meilleures pratiques ThreadLocal (3) Scénarios d'application ;
5.5 BlockingQueue du conteneur simultané
Points de connaissance : (1) Opérations de base de BlockingQueue (2) BlockingQueue couramment utilisé ;
Explication détaillée des principes d'implémentation d'ArrayBlockingQueue et LinkedBlockingQueue dans des conteneurs simultanés
Pool de threads (système exécuteur)
6.1 Principe de mise en œuvre du pool de threads
Points de connaissance : (1) Pourquoi utiliser un pool de threads ? (2) Processus d'exécution ; (3) La signification de chaque paramètre du constructeur ; (4) Comment fermer le pool de threads ; (5) Comment configurer le pool de threads ;
6.2 ScheduledThreadPoolExecuteur du pool de Threads
Points de connaissance : (1) Structure de classe ; (2) Méthodes communes ; (3) ScheduledFutureTask ;
6.3 Résumé des opérations de base de FutureTask
Points de connaissance : (1) Plusieurs états de FutureTask ; (2) méthode get ; (3) méthode d'annulation ; (5) implémentation de l'interface Runnable ;
Classe d'opération atomique
7.1 Résumé des classes d'opérations atomiques dans le package atomique en Java
Points de connaissance : (1) Principe de mise en œuvre ; (2) Type de base de mise à jour atomique (3) Type de tableau de mise à jour atomique (5) Type de champ de mise à jour atomique ;
Outils de concurrence
8.1 En anglais simple, classes d'outils de concurrence Java -CountDownLatch, CyclicBarrier
Points de connaissance : (1) CountDownLatch ; (2) CyclicBarrier (3) Comparaison entre CountDownLatch et CyclicBarrier ;
8.2 Classes d'outils de concurrence Java en langue vernaculaire - Sémaphore, Exchanger
Points de connaissance : (1) Contrôle d'accès aux ressources Sémaphore (2) Échange de données ;
Pratique de la concurrence
9.1 Un article qui permet de bien comprendre la problématique producteur-consommateur
Graphique de connaissances sur la concurrence JAVA
Vous pouvez passer à une nouvelle fenêtre pour l'agrandir pour une meilleure visualisation ou afficher l'image originale.
Lien vers l'image originale du graphe de connaissances Si cela est utile, vous pouvez le cloner pour votre propre usage.