前言
本文分析在Android中创建线程时候的源码分析,即JavaThread和NativeThread。
java/lang/Thread.java
art/runtime/native/java_lang_Thread.cc
art/runtime/thread.cc
两种Java Thread
有两种可以运行Java代码的线程。有两种情况:
- 通过new Thread创建的java线程
- 在Native层直接通过pthread_create创建线程,通过gVm->AttachCurrentThread到虚拟机之后,通过JniEVN也可以运行 Java 代码。
Thread.java&thread.h
Java Thread的nativePeer成员变量指向一个ART Thread对象。
ART Thread对象中的tlsPtr.opeer和tlsPtr.jpeer都指向同一个Java Thread实例。opeer的类型为mirror Object*,jpeer的类型为jobject。
public
class Thread implements</