调用Thread.start
和Thread.run
之间发生的事件顺序是什么?我问,因为主要是出于好奇,而且因为我似乎无法追踪本地调用以找到他们的实现,而且还回答了一些关于我在开始Thread
后可以期待的问题。
This question提供了一个很好的高级答案,但我正在寻找一个更深入的答案 +可以链接到源代码。
答案 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/。一旦我有机会阅读代码并理解它,我会立即更新这个答案。