|
State
|
Description
|
|---|
|
New
|
- a thread that has not yet started
|
|---|
|
Runnable
|
- thread state for a runnable thread
- a thread in runnable state might be either:
- running
- ready run at any instant of time
|
|---|
|
Blocked
|
- thread state for a thread blocked waiting for a monitor lock
- a thread in the blocked state is waiting for a monitor lock to enter a synchronized block/method or reenter a synchronized block/method after calling
Object.wait()
|
|---|
|
Waiting
|
- thread state for a waiting thread
- a thread is in the waiting state due to calling one of the following methods:
Object.wait with no timeout
Thread.join with no timeout
LockSupport.park
- a thread in the waiting state is waiting for another thread to perform a particular action. For example, a thread that has called
Object.wait() on an object is waiting for another thread to call Object.notify() or Object.notifyAll() on that object. A thread that has called Thread.join() is waiting for a specified thread to terminate.
|
|---|
|
Timed Waiting
|
- thread state for a waiting thread with a specified waiting time
- a thread is in the timed waiting state due to calling one of the following methods with a specified positive waiting time:
Thread.sleep
Object.wait with timeout
Thread.join with timeout
LockSupport.parkNanos
LockSupport.parkUntil
|
|---|
|
Terminated
|
- a thread terminates because of either of the following reasons:
- Because it exits normally. This happens when the code of thread has entirely executed by the program.
- Because there occurred some unusual erroneous event, like segmentation fault or an unhandled exception
|
|---|