有兩個方法在native層建立thread:
1.直接使用pthread_create函式
bionic/libc/bionic/pthread_create.cpp
註冊的函式是怎樣被呼叫到的?
int pthread_create(pthread_t* thread_out, pthread_attr_t const* attr,
void* (*start_routine)(void*), void* arg)
static int __pthread_start(void* arg)
執行緒的名字是怎樣被更改的?預設是?
prctl(pr_set_name, "***x");
2. 使用繼承基類thread的方法
方法1 建立thread還是比較簡單的,直觀的。但是下面這種方式,就不太直觀
要找到基類thread的實現,在**? 看標頭檔案就行,通過標頭檔案,和檔名等,最終找到
thead基類的實現system/core/libutils/threads.cpp
class eventthread : public thread
private:
int msourcetype;
string8 msourcename;
};從中可以看到,主幹函式threadloop是怎樣被調到的。
monitor_thread->run(monitor_thread->getname(), priority_normal);
status_t thread::run(const char* name, int32_t priority, size_t stack)
else
return no_error;
}int androidcreaterawthreadetc(android_thread_func_t entryfunction,
void *userdata,
const char* threadname __android_unused,
int32_t threadpriority,
size_t threadstacksize,
android_thread_id_t *threadid)
pthread_create建立執行緒的入口函式是已知的:_threadloop
int thread::_threadloop(void* user)
self->threadloop();這個就是子類生成的主函式
建立執行緒的方法
1.繼承thread類來建立執行緒,這個方法的好處是this代表的就是當前執行緒,不需要通過thread.currentthread 來獲取當前執行緒的引用。public class main public static void main string args 2.實現runnable介面,並且...
執行緒的建立方法
1 繼承thread類,調start方法 public class mainthread class mythread extends thread 2 實現runnable介面 public class mainthread class myrun implements runnable 3 執行...
執行緒建立方法
第一種方式 使用runnable介面建立執行緒。使用runnable介面建立執行緒 1.可以將cpu,和資料分開,形成清晰的模型 2.執行緒體run 方法所在的類可以從其它類中繼承一些有用的屬性和方法 3.有利於保持程式的設計風格一致 用runnanble 建立執行緒的步驟 1.定義乙個runnab...