欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

一个线程的生命周期结束,就无法再被启动

程序员文章站 2022-04-15 23:20:51
示例代码:public static void main(String[] args) throws InterruptedException { Thread thread = new Thread(() -> { try { TimeUnit.SECONDS.sleep(2); } catch (InterruptedException e) { e.printStackTrace(); }...

示例代码:

public static void main(String[] args) throws InterruptedException {
    Thread thread = new Thread(() -> {
        try {
            TimeUnit.SECONDS.sleep(2);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    });
    System.out.println("线程状态---" + thread.getState());
    thread.start();
    System.out.println("线程状态---" + thread.getState());
    TimeUnit.SECONDS.sleep(3);
    System.out.println("3秒后线程状态---" + thread.getState());
    thread.start();
}

运行效果:
一个线程的生命周期结束,就无法再被启动
报以上异常的原因在于start()方法源码中的这个判断:
一个线程的生命周期结束,就无法再被启动
只有新建的线程才能调用start()方法,而没有什么方法能够让一个线程生命周期状态重新变为0,所以如果一个线程的生命周期结束了,就无法再被启动。

本文地址:https://blog.csdn.net/weixin_38106322/article/details/107357907