This is a mind map about Java concurrency. The main content includes: locks, thread pools, concurrent containers, and basic concepts.
Edited at 2024-04-22 19:41:17Mappa mentale per l’analisi del controllo della gestione del portata di progetto. Tre sezioni principali: 1. WBS Scope Breakdown – scomposizione gerarchica del lavoro con dettaglio dello Scopo del progetto. 2. Scope Boundary / Exclusions – definizione chiara dei confini del progetto e di ciò che è escluso per evitare scope creep. Strumento ideale per project manager e team di controllo per mantenere allineamento e ridurre rischi.
Questo template, ideato con EdrawMind, è un modello completo per il miglioramento continuo del sistema di gestione della qualità, con una descrizione di circa 500 parole. È strutturato come un diagramma a lisca di pesce, strumento efficace per analizzare le cause principali dei problemi di qualità e definire le leve di controllo necessarie per risolverli. Il processo è organizzato in quattro fasi chiave: la prima è lo standard e la pianificazione, dove si definiscono gli obiettivi di qualità, i criteri di accettazione, i requisiti di prova e le porte di qualità (Quality Gate). La seconda fase analizza i processi e le porte di controllo, per garantire che ogni passaggio del lavoro segua i standard stabiliti. La terza fase riguarda l’esecuzione QA/QC, con la definizione di metodi di prova e ispezione, nonché regole per la gestione dei difetti e delle non conformità. L’ultima fase è il miglioramento e le azioni correttive e preventive (CAPA), insieme a una catena di audit per monitorare l’efficacia delle misure adottate. In basso, una tabella "Quality Gate" permette di tracciare ogni punto di controllo, con criteri specifici, metodi di prova, proprietario e stato di avanzamento. Grazie alla visualizzazione chiara e intuitiva di EdrawMind, questo strumento aiuta il team a identificare le cause root dei problemi di qualità, implementare azioni efficaci e mantenere un ciclo di miglioramento continuo, garantendo la qualità finale del prodotto o servizio.
Questo template, creato con EdrawMind, è un modello di piano di comunicazione ottimizzato, con una descrizione di circa 500 parole. È uno strumento chiave per evitare incomprensioni tra stakeholder, garantire la trasparenza e mantenere il team allineato agli obiettivi del progetto. Il modello è composto da tre elementi fondamentali e interconnessi: la matrice di comunicazione, la cadenza timeline e le regole di comunicazione/SLA. La matrice di comunicazione è una tabella dettagliata dove per ogni pubblico o stakeholder, si definisce il tipo di informazioni da condividere, lo scopo della comunicazione, il canale da utilizzare (email, riunioni, piattaforme di progetto), la frequenza, il proprietario responsabile, il formato e il percorso di escalazione in caso di problemi. La cadenza timeline è una linea temporale che definisce le scadenze delle comunicazioni chiave, garantendo che le informazioni siano condivise in momento opportuno e non si verifichino ritardi o omissioni. Le regole di comunicazione e gli accordi sul livello di servizio (SLA) definiscono le norme formali della comunicazione, come i tempi di risposta, il tono da adottare e le responsabilità di ciascun membro del team. Grazie alla struttura visuale di EdrawMind, questo template permette di pianificare la comunicazione in modo strategico, trasparente e efficiente, riducendo i rischi di cattiva informazione, migliorando la collaborazione e garantendo che tutti gli stakeholder siano informati e coinvolti nel progetto.
Mappa mentale per l’analisi del controllo della gestione del portata di progetto. Tre sezioni principali: 1. WBS Scope Breakdown – scomposizione gerarchica del lavoro con dettaglio dello Scopo del progetto. 2. Scope Boundary / Exclusions – definizione chiara dei confini del progetto e di ciò che è escluso per evitare scope creep. Strumento ideale per project manager e team di controllo per mantenere allineamento e ridurre rischi.
Questo template, ideato con EdrawMind, è un modello completo per il miglioramento continuo del sistema di gestione della qualità, con una descrizione di circa 500 parole. È strutturato come un diagramma a lisca di pesce, strumento efficace per analizzare le cause principali dei problemi di qualità e definire le leve di controllo necessarie per risolverli. Il processo è organizzato in quattro fasi chiave: la prima è lo standard e la pianificazione, dove si definiscono gli obiettivi di qualità, i criteri di accettazione, i requisiti di prova e le porte di qualità (Quality Gate). La seconda fase analizza i processi e le porte di controllo, per garantire che ogni passaggio del lavoro segua i standard stabiliti. La terza fase riguarda l’esecuzione QA/QC, con la definizione di metodi di prova e ispezione, nonché regole per la gestione dei difetti e delle non conformità. L’ultima fase è il miglioramento e le azioni correttive e preventive (CAPA), insieme a una catena di audit per monitorare l’efficacia delle misure adottate. In basso, una tabella "Quality Gate" permette di tracciare ogni punto di controllo, con criteri specifici, metodi di prova, proprietario e stato di avanzamento. Grazie alla visualizzazione chiara e intuitiva di EdrawMind, questo strumento aiuta il team a identificare le cause root dei problemi di qualità, implementare azioni efficaci e mantenere un ciclo di miglioramento continuo, garantendo la qualità finale del prodotto o servizio.
Questo template, creato con EdrawMind, è un modello di piano di comunicazione ottimizzato, con una descrizione di circa 500 parole. È uno strumento chiave per evitare incomprensioni tra stakeholder, garantire la trasparenza e mantenere il team allineato agli obiettivi del progetto. Il modello è composto da tre elementi fondamentali e interconnessi: la matrice di comunicazione, la cadenza timeline e le regole di comunicazione/SLA. La matrice di comunicazione è una tabella dettagliata dove per ogni pubblico o stakeholder, si definisce il tipo di informazioni da condividere, lo scopo della comunicazione, il canale da utilizzare (email, riunioni, piattaforme di progetto), la frequenza, il proprietario responsabile, il formato e il percorso di escalazione in caso di problemi. La cadenza timeline è una linea temporale che definisce le scadenze delle comunicazioni chiave, garantendo che le informazioni siano condivise in momento opportuno e non si verifichino ritardi o omissioni. Le regole di comunicazione e gli accordi sul livello di servizio (SLA) definiscono le norme formali della comunicazione, come i tempi di risposta, il tono da adottare e le responsabilità di ciascun membro del team. Grazie alla struttura visuale di EdrawMind, questo template permette di pianificare la comunicazione in modo strategico, trasparente e efficiente, riducendo i rischi di cattiva informazione, migliorando la collaborazione e garantendo che tutti gli stakeholder siano informati e coinvolti nel progetto.
Java concurrency
basic concept
process
heap
method area
The heap and method area are resources shared by all threads. The heap is the largest piece of memory in the process and is mainly used to store newly created objects (almost all objects allocate memory here). The method area is mainly used to store loaded objects. Class information, constants, static variables, code compiled by just-in-time compiler and other data.
thread
program counter
Virtual machine stack
native method stack
There can be multiple threads in a process, and multiple threads share the heap and method area (metaspace after JDK1.8) resources of the process, but each thread has its own program counter, virtual machine stack and local method stack.
concurrent
parallel
Can easily lead to memory leaks, deadlocks, and thread insecurity
Synchronize
asynchronous
Thread safety
Create thread
Thread life cycle and status
NEW
Ready (Runnable)
Running
Blocked
Synchronous blocking (Blocked)
Waiting for blocking (WAITING)
Timeout waiting blocking (TMME-WAITING)
Death (Dead/TERMINATED)
Thread context switching
thread deadlock
Four necessary conditions for deadlock
How to prevent deadlock
How to troubleshoot
Graphical: jconsole
jps -l finds out the program process number, jstack process number
JMM
definition
background
CPU and cache coherence
Processor optimization
Parallel reordering of instructions
Compiler optimization rearrangement
Memory system rearrangement
Concurrency theory
as-if-serial rules
happens-before rule
program sequence rules
Monitor lock rules
Volatile variable rules
transitivity rule
start() rule
join() rules
Three major characteristics
atomicity
visibility
Orderliness
How to solve concurrency issues
Three major keywords
volatile
visibility
happens before principle
principle
write memory semantics
Read memory semantics
Orderliness
Implementation of memory semantics
synchronized
effect
atomicity
Orderliness
visibility
write memory semantics
Read memory semantics
Usage
Decorate instance methods
Modify static methods
Decorate code blocks
principle
synchronized code block
sync method
java object model
Object header
Mark Word
Klass Point
Instance data
Byte alignment
lock upgrade
no lock
Lock status
bias lock
Lock status
Upgrade time
Specific operations
benefit
The biased thread ID is inconsistent with the current thread ID.
Competition success
Competition failed
Technical realization
lightweight lock
Lock status
Upgrade time
effect
Spin
The difference between bias lock and bias lock
Heavyweight lock
Lock status
Upgrade time
principle
jdk1.6 optimization
spin lock
adaptive spin lock
lock elimination
lock roughening
bias lock
lightweight lock
final
effect
Reordering rules
Write reordering rules for final fields
Reordering rules for reading final fields
memory barrier
concurrent container
List
CopyOnWriteArrayList
Vector
Set
CopyOnWriteArraySet
Map
ConcurrentHashMap
ConcurrentSkipListMap
HashTable
queue
ArrayBlockingQueue
LinkedBlockingQueue
PriorityBlockingQueue
SynchronousQueue
Thread Pool
definition
Advantage
Reduce resource consumption
Improve response speed
Improve thread manageability
How to create
Executors
FixedThreadPool
SingleThreadExecutor
An unbounded LinkedBlockingQueue is probably used. The maximum length of the task queue is Integer.MAX_VALUE. A large number of requests may accumulate, resulting in OOM.
CachedThreadPool
The synchronization queue SynchronousQueue is used, and the number of threads allowed to be created is Integer.MAX_VALUE.
ScheduledThreadPool
The unbounded delayed blocking queue DelayedWorkQueue is used. The maximum length of the task queue is Integer.MAX_VALUE, which may accumulate a large number of requests, resulting in OOM.
ThreadPoolExecutor
Common parameters
corePoolSize
maximumPoolSize
workQueue
keepAliveTime
unit
threadFactory
handler
AbortPolicy
CallerRunsPolicy
DiscardPolicy
DiscardOldestPolicy
Process of handling tasks
How to set the size of the thread pool
Theoretical algorithm
empirical method
CPU intensive tasks (N 1)
I/O intensive tasks (2N)
Future class
Cancel task
Determine whether the task has been canceled
Determine whether the task has been completed
Get task execution results
shortcoming
CompletableFuture
Solve the shortcomings of Future
advantage
CompletionStage
Lock
basic concept
pessimistic lock
advantage
The cost of pessimistic locking is fixed
shortcoming
Fierce lock competition can cause thread blocking
A large number of blocked threads will cause context switching of the system Increase system performance overhead
Pessimistic locking may also cause deadlock problems
Applicable scene
Write multiple scenarios and fierce competition (to avoid frequent failures and retries that affect performance)
optimistic locking
advantage
There is no lock competition causing thread blocking
There will be no deadlock problem
shortcoming
If conflicts occur frequently (a lot of writes occur), there will be frequent failures and retries.
Applicable scene
Multiple reading scenarios, less competition (can avoid frequent locking affecting performance)
Implementation plan
Version number mechanism
CAS algorithm
ABA questions
Long cycle time and high overhead
Only atomic operations on a shared variable are guaranteed
ThreadLocal
effect
principle
Hash algorithm
Hash conflict
Memory leak problem
reason
solution
AQS
main idea
state
CLH queue
structure
principle
advantage
Excellent performance, low overhead for acquiring and releasing locks.
fair lock
Simple to implement and easy to understand
Strong scalability
shortcoming
Spin operation will cause large CPU overhead when the lock is held for a long time.
Single function and cannot support complex functions
CLH cohort variants
AQS changes spin operation to blocking thread operation
Improvements to lock data structures
Extend the state of each node
SIGNAL
PROPAGATE
CONDITION
CANCELLED
Explicitly maintain predecessor and successor nodes
Optimization of auxiliary GC such as explicitly setting the dequeue node to null
Schematic diagram
shared lock
exclusive lock
ReentrantLock
what is
principle
Unfair locking process
When thread one is locked successfully
AQS internal data
Thread two lock failed
CLH queue situation
Thread three lock failed
Fair lock locking process
Unlocking process
The process of releasing the lock
Waiting for queue data
final queue data
Condition
Implementation principle
ReentrantReadWriteLock
Applicable scene
Can a thread still acquire a write lock if it holds a read lock?
Read lock cannot be upgraded to write lock
Semaphore
Two modes
fair mode
Unfair model
principle
CountDownLatch
effect
principle
Disposable
CyclicBarrier
Atomic class
basic type
AtomicInteger
AtomicLong
AtomicBoolean
array type
AtomicIntegerArray
AtomicLongArray
AtomicReferenceArray
reference type
AtomicReference
AtomicStampedReference
Object property modification type
AtomicIntegerFieldUpdater
AtomicLongFieldUpdater
AtomicReferenceFieldUpdater