我正在寻找一些深入的解释Thread.start()内部如何调用run()方法.我知道它是我的JVM,它通过start()方法在内部调用run(),当我开始检查Thread类的源代码时,我发现以下代码:
public synchronized void start()
{
if(threadStatus != 0)
throw new IllegalThreadStateException();
group.add(this);
start0();
if(stopBeforeStart)
stop0(throwableFromStop);
}
private native void start0();
Run Code Online (Sandbox Code Playgroud)
现在我可以看到start()调用本机方法start0()但我看不到任何与加载本机代码库相关的代码.
请帮我理解完整的呼叫流程.
谢谢,Sandip
Java是开源的..一项小型研究也可以为您提供本机代码的源代码.看,你可以看到自己的流程.请参阅在何处查找java.lang本机方法的源代码?.
根据:Java本机方法源代码 使用jdk7源码
JDK 7的Thread.c:http://hg.openjdk.java.net/jdk7/jdk7/jdk/file/00cd9dc3c2b5/src/share/native/java/lang/Thread.c
根据我的知识,查找本机代码以查看发生的事情并不像查看您看过的java代码那样有趣.
因为,虽然他们鼓励我们不使用native code,但他们使用它是因为jdk不同平台的发布方式不同.在大多数jdk源代码中,我们可以看到一些本机方法声明.
| 归档时间: |
|
| 查看次数: |
3492 次 |
| 最近记录: |