226. Tracing virtual thread states and transitions
As you know, a thread can be in one of the following states: NEW
, RUNNABLE
, BLOCKED
, WAITING
, TIMED_WAITING
, or TERMINATED
. These states are elements of the State
enum and are exposed via the Thread.currentThread().getState()
call. These states are valid for platform threads and for virtual threads as well and we can use them in our applications. (If you’re unfamiliar with this, you can find more details about it in Java Coding Problems, First Edition, Chapter 10, Problem 199.)
However, internally speaking, a virtual thread works on a state transition model, as shown in the following figure:
Figure 11.4: Virtual thread state transitions
These states are declared in the VirtualThread
class as private static final int
. So, they are not public. However, they are essential for understanding the lifecycle of a virtual thread, so let’s briefly attempt to trace a virtual thread’s states during its lifetime...