Java线程启动时会发生什么直到它开始运行

时间:2016-01-12 07:30:25

标签: java multithreading concurrency java-threads

调用Thread.startThread.run之间发生的事件顺序是什么?我问,因为主要是出于好奇,而且因为我似乎无法追踪本地调用以找到他们的实现,而且还回答了一些关于我在开始Thread后可以期待的问题。

This question提供了一个很好的高级答案,但我正在寻找一个更深入的答案 +可以链接到源代码。

2 个答案:

答案 0 :(得分:1)

我不确定如何连接Java Thread的每个本机方法,但Java Threads在本机层中使用pthread。 https://en.wikipedia.org/wiki/POSIX_Threads

Java中的Thread#start方法创建(并启动)一个由pthread支持的VMThread。 VMThread由JNI支持,其大部分调用都在vm / Thread.c(例如https://android.googlesource.com/platform/dalvik/+/eclair-release/vm/Thread.c)。

E.g。 VMThread#create调用JNI方法Dalvik_java_lang_VMThread_create并在vm / Thread.c中调用dvmCreateInterpThread函数

我希望这是一个很好的开始,让你开始谷歌搜索线程创建和它的开始之间究竟发生了什么。

答案 1 :(得分:1)

波士顿街道向我指出了正确的方向,我找到了https://android.googlesource.com/platform/art/+/marshmallow-release/runtime/。一旦我有机会阅读代码并理解它,我会立即更新这个答案。