threading un-started and dead are considered to indicate that the thread is alive (and therefore may run at some pointthis is shown belowa thread may also be in the waiting statefor examplewhen it is waiting for another thread to finish its work before continuing (possibly because it needs the results produced by that thread to continuethis can be achieved using the join(method and is also illustrated above once the second thread completes the waiting thread will again become runnable the thread which is currently executing is termed the active thread there are few points to note about thread statesa thread is considered to be alive unless its run(method terminates after which it can be considered dead live thread can be runningrunnablewaitingetc the runnable state indicates that the thread can be executed by the processorbut it is not currently executing this is because an equal or higher priority process is already executingand the thread must wait until the processor becomes free thus the diagram shows that the scheduler can move thread between the running and runnable state in factthis could happen many times as the thread executes for whileis then removed from the processor by the scheduler and added to the waiting queuebefore being returned to the processor again at later date creating thread there are two ways in which to initiate new thread of executionpass reference to callable object (such as function or methodinto the thread class constructor this reference acts as the target for the thread to execute