Thread.isAlive() can determine if a thread is running.
Tests if this thread is alive. A thread is alive if it has been started and has not yet died.
Thread#getState(); can return the exact state of a thread.
Returns the state of this thread. This method is designed for use in monitoring of the system state, not for synchronization control.