12.如何得知线程执行完(isAlive)


 

 

如何得知线程执行完(isAlive

 导言

如何知道一个线程是否执行完,我们可以通过判断它是否存活来得知它是否执行完。线程若存活则表示他没有执行完,若死亡则表示他执行完。

Thread类里面的isalive方法的作用就是判断线程是否存活。它返回一个布尔类型的结果,线程存活返回true,否则返回是false

 演示

下面来演示该方法,制定一个任务任务内容为空即可。

Task

package com.chenjie.executor.day12;

/**
 * packageName com.chenjie.executor.day09
 *
 * @author chenjie
 * @version JDK 8
 * @className PringTask (此处以class为例)
 * @date 2024/5/27
 * @description TODO
 */
public class Task implements Runnable{
    @Override
    public void run() {

    }
}

下面来执行该任务。首先将任务创建出来,然后创建一个线程,接着将任务传递给线程。

再接着启动线程,在线程启动之前,我们先判断一遍线程是否重复,然后在线程启动之后,我们再判断一遍线程是否重复

我们还需要在一秒钟之后再去判断一遍线程是否重复,因为线程执行任务需要时间,所以这里我们使主线程休眠一秒钟。sleep方法有异常抛出,使用try catch将其捕获,最后再判断一遍线程是否存活。

Main

 

package com.chenjie.executor.day12;


/**
 * packageName com.chenjie.executor.day09
 *
 * @author chenjie
 * @version JDK 8
 * @className Main1 (此处以class为例)
 * @date 2024/5/27
 * @description TODO
 */
public class Main {

    /**
     * 线程只有在start的时候才是存活状态,执行完就不会存活
     * @param args
     */
    public static void main(String[] args) {
       Task pringTask = new Task();
        Thread thread=new Thread(pringTask);
        System.out.println("线程是否存活1"+thread.isAlive());
        thread.start();
        System.out.println("线程是否存活2"+thread.isAlive());

        try {
            Thread.sleep(1000L);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        System.out.println("线程是否存活3"+thread.isAlive());

        System.out.println("结束方法");
    }
}

结果

从运行结果来看,线程启动前是死亡状态,此时线程还没有启动,县城启动之后是存活状态,说明线程正在执行任务,一秒钟之后县城是死亡状态,说明任务已经执行完毕。

线程是否存活1false
线程是否存活2true
线程是否存活3false
结束方法

 总结

最后我们来总结一下本节的内容,本节介绍了thread里面的isalive方法,它是一个非静态方法,作用是判断该线程是否存活,在实际开发中偶尔也会用到它。 

posted @ 2022-04-26 22:38  小陈子博客  阅读(1513)  评论(0编辑  收藏  举报