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方法,它是一个非静态方法,作用是判断该线程是否存活,在实际开发中偶尔也会用到它。
本文来自博客园,作者:小陈子博客,转载请注明原文链接:https://www.cnblogs.com/cj8357475/p/16086011.html