Метод isAlive
Метод isAlive класса Thread проверяет,
является ли поток активным. Метод возвращает
true, если поток был запущен и еще не
завершил свое выполнение, и false в противном
случае. Поток считается активным, если он был
запущен через метод start и еще не завершился.
Метод не принимает параметров и возвращает
значение типа boolean.
Синтаксис
thread.isAlive()
Пример
Давайте создадим поток и проверим его состояние до запуска, во время выполнения и после завершения:
public class Main
{
public static void main(String[] args) throws InterruptedException
{
Thread thread = new Thread(() -> {
try
{
Thread.sleep(500);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
});
System.out.println("Before start: " + thread.isAlive());
thread.start();
System.out.println("After start: " + thread.isAlive());
thread.join();
System.out.println("After join: " + thread.isAlive());
}
}
Результат выполнения кода:
"Before start: false"
"After start: true"
"After join: false"
Пример
Давайте проверим активность главного потока и нового потока во время его работы:
public class Main
{
public static void main(String[] args) throws InterruptedException
{
Thread mainThread = Thread.currentThread();
System.out.println("Main is alive: " + mainThread.isAlive());
Thread thread = new Thread(() -> {
try
{
Thread.sleep(300);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
});
thread.start();
while (thread.isAlive())
{
System.out.println("Worker is still running...");
Thread.sleep(100);
}
System.out.println("Worker finished: " + thread.isAlive());
}
}
Результат выполнения кода:
"Main is alive: true"
"Worker is still running..."
"Worker is still running..."
"Worker is still running..."
"Worker finished: false"