Nội dung
Danh sách bài học
- 01~10 phút
Module 01 — Concurrency cơ bản: tổng quan
Bản đồ module concurrency: từ process/thread và race condition, qua bộ công cụ java.util.concurrent, tới executor, virtual thread và structured concurrency.
- 02~15 phút
Process và Thread — từ nền tảng hệ điều hành đến Java Concurrency
Process khác thread ra sao, thread chia sẻ và giữ riêng gì. User vs kernel thread, ba mô hình ánh xạ M:1/1:1/M:N, và cách JVM chạy platform lẫn virtual thread.
- 03~14 phút
Thread API và vòng đời — start, join, interrupt
Tạo và chạy thread đúng: start vs run, sáu trạng thái Thread.State, join/sleep, daemon thread, và cooperative cancellation — vì sao interrupt() chỉ set cờ.
- 04~14 phút
Thread Safety: Viết code đúng khi nhiều thread cùng chạm vào dữ liệu
Shared mutable state là gốc của bug concurrency: tách atomicity khỏi visibility, rồi điểm bốn chiến lược confinement, immutability, synchronization, delegation.
- 05~14 phút
Confinement: Thread safety bằng cách không chia sẻ
Thread safety bằng cách triệt tính shared: ad-hoc confinement, stack confinement, ThreadLocal và ScopedValue (Java 25). Khi nào confinement là đủ.
- 06~14 phút
Immutability: Thread safety bằng cách không thay đổi
Thread safety bằng triệt tính mutable: điều kiện immutable, initialization safety của final, cạm bẫy field mutable trong record, và immutable holder.
- 07~15 phút
volatile & synchronized: Hai cơ chế đồng bộ nội tại của Java
Hai cơ chế đồng bộ có sẵn trong ngôn ngữ ở hai đầu của phổ: volatile (chỉ visibility) và synchronized (mutual exclusion + visibility), Java Monitor Pattern, wait/notify.
- 08~14 phút
Atomic & CAS: đồng bộ lock-free cho thao tác trên một biến
Đồng bộ lock-free cho thao tác đơn: CAS, AtomicInteger/Long/Reference, ABA problem, LongAdder và VarHandle. Khi nào atomic đủ, khi nào cần lock.
- 09~13 phút
ReentrantLock & Condition — khi synchronized là chưa đủ
ReentrantLock mở ra tryLock, timeout, lockInterruptibly và fairness; Condition cho nhiều wait set độc lập trên một khóa — đổi lại bạn phải tự unlock trong finally.
- 10~13 phút
ReadWriteLock, StampedLock & AQS — khi đọc áp đảo ghi
ReadWriteLock cho nhiều reader song song khi đọc áp đảo ghi, StampedLock thêm optimistic read, và AQS — bộ khung đứng sau mọi khóa của java.util.concurrent.
- 11~13 phút
Delegation & concurrent collections: tái dùng lớp thread-safe
Đạt thread safety bằng cách ủy thác cho component có sẵn: khái niệm delegation (đủ vs vỡ), ConcurrentHashMap, CopyOnWriteArrayList, ConcurrentSkipList.
- 12~13 phút
Blocking queue & producer–consumer: tách nhịp sản xuất–tiêu thụ
BlockingQueue và mẫu producer–consumer: put/take, bounded vs unbounded, backpressure, SynchronousQueue và các biến thể, shutdown sạch bằng poison pill.
- 13~13 phút
Synchronizers: Điều phối tiến độ giữa nhiều thread
Điều phối tiến độ giữa nhiều thread: CountDownLatch, CyclicBarrier, Semaphore, Exchanger, Phaser — phân biệt bảo vệ dữ liệu với điều phối tiến độ.
- 14~13 phút
Executor Framework: Thread pool, lập lịch & shutdown
Tách mô tả task khỏi cơ chế chạy task: ExecutorService, ThreadPoolExecutor tuning, scheduled execution, RejectedExecutionHandler, cancellation và shutdown.
- 15~13 phút
Future & CompletableFuture: từ blocking tới pipeline async
Từ kết quả blocking đến pipeline async: Future, CompletionService, rồi CompletableFuture với thenApply/Compose/Combine, allOf/anyOf, xử lý lỗi và timeout.
- 16~13 phút
Fork/Join: Chia để trị song song với work-stealing
Chia để trị song song với work-stealing: ForkJoinPool, RecursiveTask/RecursiveAction, ngưỡng sequential cutoff, và liên hệ với parallel streams.
- 17~15 phút
Virtual Threads: mô hình thread-per-request trở lại
Thread-per-request trở lại với virtual thread (final Java 21): cơ chế mount/unmount, vì sao rẻ, pinning cần tránh, khi nào nên dùng và di cư từ thread pool.
- 18~13 phút
Structured Concurrency & ScopedValue: vòng đời nhóm task
Vòng đời có kỷ luật cho nhóm task: StructuredTaskScope (JEP 505, preview ở Java 25), các Joiner fail-fast, và ScopedValue (final Java 25) thay ThreadLocal thời Loom.
- 19~15 phút
Module 01 — Tổng kết & cheat sheet
Một trang để bookmark: cheat sheet 15 công cụ concurrency, glossary 18 thuật ngữ, 7 pitfall lớn nhất kèm code sai/đúng, và self-assessment cuối module.