2016-01-12 1 views
2

Какова последовательность событий, возникающих при вызове Thread.start и Thread.run? Я спрашиваю, потому что в основном из любопытства, и потому что я не могу проследить местные вызовы, чтобы найти их реализацию, но и ответить на некоторые вопросы, которые у меня были о том, что я могу ожидать после запуска Thread.Java Что происходит при запуске потока до начала работы

This question дает хороший ответ высокого уровня, но я ищу более подробный ответ + ссылки на исходный код.

+2

Возможный дубликат [Что действительно происходит, когда мы вызываем Thread.start()] (http://stackoverflow.com/questions/23672266/what-really-happens-when-we-call-thread-start) –

+0

I 'm ищет более подробное объяснение того, что происходит в нативном коде + ссылки на собственный код, если возможно – Eliezer

+0

Хорошо, извините, тогда;) –

ответ

1

Я не уверен, как подключается каждый собственный метод Java-Thread, но Java Threads использует pthreads в собственном слое. https://en.wikipedia.org/wiki/POSIX_Threads

Метод Thread#start в Java создает (и запускает) VMThread, который поддерживается pthread. 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 и вызывает функцию dvmCreateInterpThread в VM/Thread.c

Я надеюсь, что это хорошее начало для вас, чтобы начать погуглить вокруг того, что именно происходит между созданием темы и ее началом.

+0

Спасибо! Немного старый, потому что это код эквалайзера, но он указал мне в правильном направлении. – Eliezer