Java Internals & Concurrency
Course tier 3 trong track Java. Đào sâu JMM, concurrency primitives, blocking vs NIO selector, và JVM internals (bytecode, GC tuning, heap dump). Mục tiêu: debug được performance/memory leak production.

Giảng viên
OLHub Team75 bài đã sẵn sàng · Đọc kỹ, không xem video
4 module
Học theo từng phần, không bị nhồi
Nâng cao
Cho dev đã có kinh nghiệm
75 bài
Text-first — đọc kỹ, không xem video
~16.6 giờ
Tự nhịp, học theo tốc độ của bạn
Bạn sẽ học được gì
Sau khoá học, bạn sẽ:
Explain JMM happens-before, volatile, synchronized — predict race condition
Implement thread-safe class với 3 chiến lược: immutable, lock, atomic
Diagnose memory leak qua heap dump + jvisualvm
Compare blocking I/O vs NIO selector và choose đúng usecase
Predict hành vi GC khi tune -Xmx, -XX:+UseG1GC trên workload thực tế
Chương trình
Nội dung khoá học
4 module sẵn sàng · 75 bài. Mỗi bài 18-25 phút đọc kỹ — không xem video, không hype.
01
Concurrency cơ bản
37 bài · ~483 phút
- 01Module 01 — Concurrency cơ bản: tổng quan10p
- 02Process và Thread — từ nền tảng hệ điều hành đến Java4p13p
- 03Mô hình ánh xạ thread — user, kernel và platform thread10p
- 04Thread API và vòng đời — start, join, sleep, daemon13p
- 05Cooperative cancellation — interrupt và InterruptedException13p
- 06Thread Safety: shared mutable state và bốn chiến lược5p15p
- 07Atomicity: compound action và race condition trong Java15p
- 08Visibility: vì sao thread không thấy thay đổi của nhau13p
- 09Confinement: thread safety bằng cách không chia sẻ13p
- 10ThreadLocal và ScopedValue: per-thread state không leak trên pool14p
- 11Immutability: Thread safety bằng cách không thay đổi12p
- 12Initialization safety của final field — freeze action10p
- 13volatile và synchronized: hai cơ chế đồng bộ nội tại Java13p
- 14Bên trong synchronized: mark word, thin lock và fat lock15p
- 15Guarded block với wait/notify trên Java Monitor Pattern13p
- 16Atomic & CAS: đồng bộ lock-free cho thao tác trên một biến14p
- 17LongAdder & VarHandle: đếm dưới contention ghi cao12p
- 18ReentrantLock — tryLock, timeout và fairness khi synchronized chưa đủ13p
- 19Condition — nhiều wait set và await trong vòng while11p
- 20ReadWriteLock & StampedLock — khi đọc áp đảo ghi13p
- 21AQS — bộ khung state và hàng đợi sau mọi khóa j.u.c13p
- 22Delegation: tái dùng lớp thread-safe và khi nào nó vỡ10p
- 23Compound action ConcurrentMap: putIfAbsent, compute, merge14p
- 24Nội thất ConcurrentHashMap: per-bin lock, CAS và snapshot13p
- 25Blocking queue & producer–consumer: tách nhịp sản xuất–tiêu thụ15p
- 26Synchronizers: CountDownLatch, CyclicBarrier, Semaphore13p
- 27Exchanger và Phaser — điều phối tiến độ ngoài ba máy đếm11p
- 28Executor Framework: Thread pool và thuật toán nhận task13p
- 29Vận hành pool production: lập lịch, rejection & shutdown14p
- 30Future, FutureTask & CompletionService — nhận kết quả từ task async14p
- 31CompletableFuture: dựng pipeline async compose được14p
- 32Fork/Join: Chia để trị song song với work-stealing14p
- 33Virtual Threads: vì sao rẻ hơn platform thread nhiều bậc13p
- 34Virtual Threads: pinning, khi nào dùng và di cư thread pool14p
- 35Structured Concurrency: vòng đời có kỷ luật cho nhóm task14p
- 36ScopedValue trên virtual thread: truyền context không leak14p
- 37Module 01 — Tổng kết & cheat sheet15p
02
I/O & NIO
9 bài · ~126 phút
- 01Tổng quan module — I/O & NIO4p
- 02I/O cổ điển — InputStream, Reader, buffered wrapper14p
- 03Path và Files — NIO.2 thay java.io.File13p
- 04Duyệt thư mục và theo dõi file — walk, atomic swap, WatchService13p
- 05Serialization — cơ chế, serialVersionUID và transient14p
- 06Deserialization — lỗ hổng RCE và alternatives JSON/Protobuf13p
- 07Stream file — Files.lines, memory-mapped, channel20p
- 08Mini-challenge: Log aggregator với NIO.2 và Stream30p
- 09Tổng kết module — I/O & NIO5p
03
JVM Internals
23 bài · ~318 phút
- 01Tổng quan module — JVM Internals5p5p
- 02ClassLoader hierarchy — ba tầng và parent delegation13p
- 03Vòng đời một class trong JVM: load, link, initialize14p
- 04Classloader isolation: X cannot be cast to X (Tomcat, Boot)14p
- 05Class file và javap — đọc instruction JVM từ binary14p
- 065 lệnh invoke và invokedynamic — method dispatch trong JVM14p
- 07JIT compiler — interpreter, C1, C2 và tiered compilation14p
- 08Inlining và devirtualization — hai tối ưu chính của C213p
- 09Deoptimization, đọc JIT log và giảm warm-up JVM HotSpot14p
- 10Heap generational — young, old và bump-the-pointer ở Eden13p
- 11Metaspace, stack và native memory — đọc chữ ký OOM từng vùng14p
- 12Garbage Collection — reachability và ba thuật toán nền tảng14p
- 13Chọn GC collector theo SLA latency và đọc GC log xác nhận11p
- 14CLI tools chẩn đoán JVM — jps, jstack, jmap, jstat, jcmd15p
- 15JFR và profiling — Flight Recorder, JMC, async-profiler14p
- 16Object header và field layout — vì sao object nhỏ vẫn tốn 16 byte13p
- 17Compressed OOP và 32GB cliff — cái bẫy khi chọn heap size13p
- 18Escape analysis và scalar replacement — khi JIT xoá object13p
- 19Safepoint và STW — vì sao GC pause dài hơn GC log báo14p
- 20G1 sâu — region, SATB, remembered set và humongous object14p
- 21ZGC và Shenandoah — read barrier và concurrent compaction14p
- 22Mini-challenge: Debug memory leak với heap dump và JFR35p
- 23Tổng kết module — JVM Internals6p
04
Collections Internals
6 bài · ~66 phút
- 01Module 4 — Collections Internals: tổng quan8p
- 02Case Study: ArrayList.grow() — Vì sao 1.5x là magic number15p
- 03HashMap internals — bucket array, separate chaining và resize5p14p
- 04HashMap treeify — phòng thủ hash-collision DoS từ Java 811p
- 05Mini-challenge: P99 spike và collision DoS của ingest12p
- 06Module 04 — Tổng kết & cheat sheet Collections Internals6p
Giảng viên
Ai đứng sau khoá này
OLHub Team
Backend engineers
Backend engineers với kinh nghiệm thực tế trên Java/Spring, PostgreSQL, distributed systems. Tự build và maintain platform này, viết toàn bộ nội dung khoá học theo triết lý “hiểu bản chất, không học vẹt”.
Xem hồ sơ team →Gửi khoá này cho bạn học cùng?
Copy link đã gắn nguồn — dán group, chat, hoặc LinkedIn.
Sẵn sàng bắt đầu?
Học miễn phí, không cần thẻ, không thời hạn. Chỉ cần bạn ngồi xuống đọc kỹ.