我得到一个问题,比如创建线程时的状态是什么。该选项既有就绪也可以运行。所以我怀疑是,
提前致谢。
答案 0 :(得分:2)
1 - 不,这是新的
2 - NEW正在等待执行,RUNNABLE正在执行
3 - 新
谁能比Oracle更好地回答:https://docs.oracle.com/javase/7/docs/api/java/lang/Thread.State.html
答案 1 :(得分:2)
这是java的线程状态automat:
答案 2 :(得分:1)
实际上启动和执行线程涉及JVM和操作系统之间的协作。 JVM调用底层操作系统。您提到的状态如 ready 是Thread在等待线程集中的状态。这意味着线程准备好执行,并且线程调度程序可以安排它。
不要混淆操作系统和Java级别状态。从Java的角度来看,只有5个州
1. New
2. Runnable
3. Waiting
4. Timed Waiting
5. Terminated
答案 3 :(得分:1)
您可以在VM.java中找到答案,有六个状态
public static Thread.State toThreadState(int threadStatus) {
if ((threadStatus & JVMTI_THREAD_STATE_RUNNABLE) != 0) {
return RUNNABLE;
} else if ((threadStatus & JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER) != 0) {
return BLOCKED;
} else if ((threadStatus & JVMTI_THREAD_STATE_WAITING_INDEFINITELY) != 0) {
return WAITING;
} else if ((threadStatus & JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT) != 0) {
return TIMED_WAITING;
} else if ((threadStatus & JVMTI_THREAD_STATE_TERMINATED) != 0) {
return TERMINATED;
} else if ((threadStatus & JVMTI_THREAD_STATE_ALIVE) == 0) {
return NEW;
} else {
return RUNNABLE;
}
}