在上述代码中,使用了 Thread 类的 start() 方法来启动线程。当线程启动后,会进入到 RUNNABLE 状态,表示线程可执行但未被执行。在执行线程的过程中,可以通过 getState() 方法获取线程的当前状态。

run() 方法执行之前,线程的状态为 RUNNABLE。在 run() 方法内部,通过 Thread.sleep(1000) 模拟了线程执行耗时操作,这里是让线程休眠 1 秒钟。在线程休眠期间,线程的状态依然为 RUNNABLE,表示线程可执行但未被执行。

当线程休眠结束后,run() 方法继续执行,打印出'线程执行结束'的信息。此时线程的状态仍然为 RUNNABLE

要打印出线程的全部状态,可以在 run() 方法中的不同位置分别调用 getState() 方法获取线程的状态,并打印出来。例如,在线程开始执行之前和线程执行结束之后分别打印线程的状态,可以修改代码如下:

@Override
public void run() {
    // 线程执行的代码逻辑
    System.out.println('线程开始执行' + getName() + ' ' + getState());
    try {
        Thread.sleep(1000); // 模拟线程执行耗时操作
    } catch (InterruptedException e) {
        e.printStackTrace();
    } 
    System.out.println('线程执行结束' + getName() + ' ' + getState());
}

public static void main(String[] args) {
    Create1 create1 = new Create1();
    System.out.println('线程创建' + create1.getName() + ' ' + create1.getState());
    create1.start();
    try {
        Thread.sleep(100); // 等待线程开始执行
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    System.out.println('线程开始执行之后' + create1.getName() + ' ' + create1.getState());

    try {
        Thread.sleep(2000); // 等待线程执行结束
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    System.out.println('线程执行结束之后' + create1.getName() + ' ' + create1.getState());
}

通过在不同位置打印线程的状态,可以观察到线程的状态在不同的执行阶段的变化。

Java 多线程状态详解:RUNNABLE 状态和状态变化演示

原文地址: https://www.cveoy.top/t/topic/p7wD 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录