## Java線程是如何實現的?
當我們追蹤Java線程的實現時,可以發現Thread類的start方法最后會運行一個start0方法,而這個方法是native的,也就是交由JDK來實現的(JDK會屏蔽調底層操作系統的差異,提供給Java開發者一套通用的線程接口)

而要搞清楚這個問題的答案,首頁我們得對線程的實現有一定的了解。
線程的主要實現方式有3種(線程模型),分別是使用內核線程實現、使用用戶線程實現和使用用戶線程加輕量級進程混合實現。
## 使用內核線程實現

* 優點:
一個線程被阻塞也不會影響整個進程工作。
* 缺點:
1. 各種線程操作(如創建、析構及同步等)都需要進行系統調用,性能消耗高在用戶態和內核態來回切換。
2. 線程和內核線程一比一,內核線程也是要消耗資源的(如內核線程棧空間),所以支持的數量是有限的。
## 使用用戶線程實現

* 優點:
用戶線程的創建、同步、銷毀及調度完全是在用戶態中完成,不需要切換到內核態,因此操作是快速且低消耗的。
* 缺點:
因為沒有內核的支持,線程的所有操作都需要用戶程序自己實現,實現異常復雜。操作系統只把處理器資源分配到進程,“阻塞如何處理”,“多處理器系統如何將線程映射到其他處理器上”這類問題,甚至不可能解決。
## 使用用戶線程加輕量級經常混合實現

* 優點:
混合前2種的優點;
用戶線程操作快速且低消耗,支持更多的并發;一個線程阻塞也不會導致整個進程阻塞。
* 缺點:
實現相對復雜,且需要操作系統對應支持。
## Java線程的實現

## Java線程的調度

## 參考文檔
* 書籍:周志明 *《深入理解Java虛擬機》
- 面試突擊
- Java虛擬機
- 認識字節碼
- 000Java發展歷史
- 000Macos10.15.7上編譯OpenJDK8u
- 001熟悉Java內存區域
- 002熟悉HotSpot中的對象
- 003Java如何計算對象大小
- 004垃圾判定算法與4大引用
- 005回收堆和方法區中對象
- 006垃圾收集算法
- 007HotSpot虛擬機垃圾算法實現篇1
- 007HotSpot虛擬機垃圾算法實現篇2
- 007HotSpot虛擬機垃圾算法實現篇3
- 008垃圾收集器
- 009內存分配與回收策略
- 010Java虛擬機相關工具
- 011調優案例分析
- 012一次IDEA的啟動速度調優
- 013類文件Class的結構
- 014熟悉字節碼指令
- 015類加載機制(過程)
- 016類加載器
- IDEA的JVM參數
- Java基礎
- Java自動裝箱與拆箱
- Java基礎數據類型
- Java方法的參數傳遞
- Java并發
- 001走入并行的世界
- 002并行程序基礎
- 003熟悉Java內存模型JMM
- 004Java并發之volatile關鍵字
- 005線程池入門到精通
- 006Java多線程間的同步控制方法
- 007Java維基準測試框架JMH
- 008Java并發容器
- 009Java的線程實現
- 010Java關鍵字synchronized
- 011一些并行模式的熟悉
- 單例模式和不變模式
- 生產者消費者模式
- Future模式
- 012一些并行算法的熟悉
- 面試總結
- 長亮一面