The thread class provides a method which can be called on an instance of a Thread to determine if it is currently executing. If isAlive() returns false the thread is either a new thread that is not currently executing or it is dead.
public boolean isAlive();
The following code creates a thread and executes it by calling it's start() method. Before the thread is started a test is performed to determine if the thread is currently executing. Since the thread is new, isAlive() returns false. You will also notice within the run() method a reference to the current thread is grabbed using the following method.
Code:
static Thread currentThread()
Since isAlive() is called within the run() method isAlive() returns true because the thread is executing at that time.
Code:
public class ThreadTest{
public static void main(String[] args){
T t = new T("T Thread");
threadStatus(t.isAlive(),t.getName());
t.start();
}
public static void threadStatus(boolean isalive, String tname){
String status = isalive ? "is alive" : " is not alive";
System.out.println(tname +""+ status);
}
}
class T extends Thread{
public T(String tname){
super(tname);
}
public void run(){
Thread t = Thread.currentThread();
String tname = t.getName();
boolean isalive = t.isAlive();
for(int i = 0; i < 9; ++i){
System.out.println(tname + " is alive ?" + " : " + isalive);
}
}
}