Day 100: What 100 Days of Java Actually Changed in How I Think About Software
This challenge started as a way to learn more Java. Over time, it became a way to follow confusion down to memory, coordination, performance, and failure modes.
This challenge started as a way to learn more Java. Over time, it became a way to follow confusion down to memory, coordination, performance, and failure modes.
I thought virtual threads replaced the need for Netty and event loops. Then I built both models from scratch and benchmarked them. Virtual threads didn’t kill event loops they made blocking I/O viable for most cases. But event loops still win for ultra-high connection counts. Here’s when each approach wins.
Parallel streams gave me 60% CPU utilization on 8 cores. I thought that was good. Then I discovered why the default spliterator creates massive load imbalance, and how a 50-line custom implementation cut processing time by 40%.
I thought virtual threads were just green threads—turns out they’re continuations on the heap with sophisticated scheduling. Here’s what I got wrong and what actually happens under the hood.
Part 3: Advanced Patterns & Production Readiness - Deep dive into 3 advanced tools plus debugging, monitoring, and going to production