Why it matters
Thread state confusion causes many concurrency bugs: assuming a thread is running when it's blocked, assuming it's blocked when it's terminated. Understanding lifecycle avoids these.
Advertisement
The architecture
Created: thread object exists but not started.
Runnable: ready to run, waiting for scheduler.
Running: currently executing on CPU.
Advertisement
How it works end to end
Blocked: waiting on I/O (network, disk) or synchronization primitive (lock, condition variable).
Waiting: parked awaiting notification (wait/notify pattern).
Terminated: run method exited. Thread object still exists but can't be restarted.