Define high-level thread states?, JAVA Programming

The state chart diagram given below defines the thread states.

1. Runnable - waiting for its turn to be picked for performing by the thread scheduler based on thread priorities.

2. Running: The processor is actively running the thread code. It performs until it becomes blocked, or voluntarily makes up its turn with that static function Thread.yield(). Because of context switching overhead, yield() could not be used very commonly.

3. Waiting: A thread is in a blocked state while it waits for some external programming such as file I/O to complete.