JAVA執行緒建立底層流程
下面讓我們來大概的分析下一個Java執行緒啟動後,底層的呼叫細節。
環境:JDK:1.8
glibc:2-25
linux-kernel:2.6.0
一JAVA 層面:
當我們建立一個執行緒並執行start()方法後這個執行緒才會被建立和執行。java.lang.Thread.start()方法會呼叫本地方法start0();
二 JVM 層面:
接下來start0()方法會呼叫JVM_StartThread()方法:
這是JVM_StartThread的具體實現,可以看到,它會建立一個JavaThread例項。
我們來看看JavaThread的構造方法裡邊發生了什麼:
os::create_thread的具體實現。在這個方法中會建立一個平臺相關的OSThread 例項。
在os::create_thread()方法中會利用glibc庫中的pthread.h中的pthread_create方法建立一個輕量級的Linux程式,這個方法執行後,執行緒建立控制流從JVM轉到OS.
三 OS層:
pthread.h 中定義pthread_create()方法。
pthread_create()方法的具體實現。
pthread_create 方法進入clone方法的橋樑create_thread()方法。
create_thread方法的具體實現:
系統呼叫:
系統呼叫的處理程式:sys_clone
do_fork()函式的具體實現:
參考資料:①https://yq.aliyun.com/articles/67090? spm=5176.8091938.0.0.G8W8Xw
②http://blog.csdn.net/u011955950/article/details/45601985
③http://hllvm.group.iteye.com/group/topic/43599
相關文章
- 死磕java底層(一)—多執行緒Java執行緒
- Java面試必問之執行緒池的建立使用、執行緒池的核心引數、執行緒池的底層工作原理Java面試執行緒
- iOS底層原理 - 常駐執行緒iOS執行緒
- JAVA中執行緒的建立Java執行緒
- 以 DEBUG 方式深入理解執行緒的底層執行原理執行緒
- 【Java】執行緒的建立方式Java執行緒
- Java 執行緒建立與常用方法Java執行緒
- Java多執行緒學習(1)建立執行緒與執行緒的生命週期Java執行緒
- 【java】【多執行緒】建立執行緒的兩種常用方式(2)Java執行緒
- 規範使用執行緒池與底層原理詳解執行緒
- 多執行緒------執行緒與程式/執行緒排程/建立執行緒執行緒
- java執行緒建立的兩種方式Java執行緒
- 徹底明白Java的多執行緒-執行緒間的通訊(2)(轉)Java執行緒
- 徹底明白Java的多執行緒-執行緒間的通訊(1)(轉)Java執行緒
- 死磕 java執行緒系列之執行緒池深入解析——普通任務執行流程Java執行緒
- 執行緒的建立及執行緒池執行緒
- 死磕 java執行緒系列之執行緒池深入解析——未來任務執行流程Java執行緒
- Java多執行緒——執行緒Java執行緒
- java--執行緒池--建立執行緒池的幾種方式與執行緒池操作詳解Java執行緒
- CUDA執行緒層次執行緒
- 執行緒池建立執行緒的過程執行緒
- 認識執行緒、建立執行緒寫法執行緒
- Java建立多執行緒的四種方式Java執行緒
- Java建立多執行緒的一種方法Java執行緒
- JAVA中執行緒建立的2種方法Java執行緒
- Java 執行緒池的建立過程分析Java執行緒
- Java多執行緒的建立和啟動Java執行緒
- Java:使用Executors建立和管理執行緒薦Java執行緒
- java建立執行緒池的幾中方式Java執行緒
- 【JAVA併發第二篇】Java執行緒的建立與執行,執行緒狀態與常用方法Java執行緒
- iOS底層原理 多執行緒之GCD 看我就夠了 --(10)iOS執行緒GC
- Java多執行緒-執行緒中止Java執行緒
- Java多執行緒——執行緒池Java執行緒
- Java執行緒:執行緒中斷Java執行緒
- 【原創】Java多執行緒初學者指南(3):使用Runnable介面建立執行緒Java執行緒
- java的執行緒、建立執行緒的 3 種方式、靜態代理模式、Lambda表示式簡化執行緒Java執行緒模式
- Java執行緒池核心執行緒用盡後為何優先排隊而不是繼續建立執行緒直至最大執行緒數?Java執行緒
- Java併發(三)----建立執行緒的三種方式及檢視程式執行緒Java執行緒