Backend
A first-principles guide to the Java Memory Model: why concurrent Java fails without synchronization, what happens-before really means, and how volatile, synchronized, final, and java.util.concurrent each forge the guarantees you need.
Backend
Java virtual threads explained: how they differ from platform threads, the carrier/mount/unmount mechanism, the cheap thread-per-task model, pinning and ThreadLocal gotchas, and when to use them (I/O-bound) vs not (CPU-bound).