【发布时间】:2016-04-25 19:25:38
【问题描述】:
我想知道线程如何以及何时在可运行状态和运行状态之间来回移动。幕后实际发生了什么。我想在 ThreadPool 的情况下需要这样做,但我无法完全理解。请帮助我理解这一点。
【问题讨论】:
-
为什么需要知道?我也不知道这个,但是在没有这些知识的情况下成功使用了
ThreadPool。 -
我只是想知道......如果线程处于运行状态,这意味着它正在执行 run() 方法,而当它处于可运行方法时,它正在执行 start() 方法......所以我猜从运行到可运行意味着它从运行()回到开始()......如果我错了,请纠正我,因为我是多线程的初学者
-
线程调度是特定 JVM 的实现细节。最好的建议是将您的代码设计为不依赖于调度技巧、优先级调整或 thread.yield(),因为这样的代码不可移植。让 JVM 参与线程调度。在最好的情况下,大多数时候你不需要意识到它。
-
这个问题你指的是
Thread.State(docs.oracle.com/javase/8/docs/api/java/lang/Thread.State.html)吗?我在这里看到的最接近的状态是NEW和RUNNABLE,文档说线程在启动时会从前者发生变化。 -
@scottb ..感谢您的回答.....告诉我一件事从运行移回可运行意味着线程正在从 run() 方法移回 start()...做如果我错了,请纠正我
标签: java multithreading threadpool