悟空老师, 那个验证正在运行的线程是 RUNNABLE 状态的话,为什么不直接在 run() 方法中打印呢?

来源:6-3 状态演示1

qq_弹簧_3

2019-09-28

就好比是这个样子?

    @Override
    public void run() {
        // 线程的第二种状态 RUNNABLE
        System.out.println(Thread.currentThread().getState());
        for (int i = 0; i < 1000; i++) {
            System.out.println(i);
        }
    }
写回答

2回答

悟空

2019-09-28

也可以的,两种方法效果相同。

1
0

小瑞111

2019-09-28

我觉得在run方法打印状态也只能打印出RUNNABLE状态,毕竟只有当前线程运行的时候才能执行这行代码,如果当前前程被阻塞了,是不会运行这行代码的,也就不会打印当前线程的状态,但是如果我们在其他运行中的线程去打印此线程的状态,是可以打印出被阻塞线程的状态。

1
2
小瑞111
回复
qq_弹簧_3
如果是thread1线程是RUNNABLE状态,那么其他运行着的线程去打印它就是RUNNABLE状态,可以验证的。
2019-09-28
共2条回复

线程八大核心+Java并发原理及企业级并发解决方案

完整的并发知识网络+丰富的工作内容分享+50余道并发高频面试题

2512 学习 · 939 问题

查看课程