【发布时间】:2020-12-27 16:15:09
【问题描述】:
我正在做一些测试以了解 java 中的不同线程状态,但遇到了一些查询。
通常,当一个线程被实例化时,它被称为处于"NEW" 状态,然后当对其调用start() 方法时,操作系统调度程序获得控制并处于"RUNNABLE" 状态并且此外,当run() 被start() 在内部调用时,它被称为处于运行状态。
Thread.currentThread().getState() // Returns the state of the thread
但在执行以下代码时观察到,即使在 run 方法内进行测试,线程状态也不会显示为 "RUNNING"。
谁能帮我理解为什么会这样?
public static void main(String[] args) {
System.out.println("Hello World");
Thread t=new Thread(()->{
System.out.println("Hi");
System.out.println(Thread.currentThread().getState()); //// STATE DISPLAYED AS "RUNNABLE" AGAIN
});
System.out.println(t.getState()); // STATE DISPLAYED AS "NEW"
t.start();
System.out.println(t.getState()); // STATE DISPLAYED AS "RUNNABLE"
}
lambda 表达式用于实现 run() 方法,我们正在测试线程的状态,该状态再次显示为“RUNNABLE”而不是“RUNNING”
【问题讨论】:
标签: java multithreading concurrency parallel-processing