- Java多線程并發體系實戰(微課視頻版)
- 劉寧萌編著
- 485字
- 2024-12-27 21:11:13
1.4 線程啟動方式
Java線程的核心啟動方式只有一種,別的啟動方式都是基于核心啟動方式的一種包裝。
線程啟動方式有且只有一種,也就是通過Thread對象的start()方法啟動,代碼如下:

FourMain類主方法,代碼如下:

執行結果如下:

注意:這里一定要理解線程啟動后的概念。
主方法是Java虛擬機(JVM)的入口,主方法運行后會有3個線程啟動。一個是默認的主線程,還有兩個是通過線程對象.start()方法啟動的線程,如圖1-2所示。

圖1-2 線程啟動
Thread類start()方法的源代碼刪減版,只保留了核心的內容,如圖1-3所示。線程對象start()方法執行后,最終會調用底層的start0()方法,start0()方法是由native修飾的,是Java虛擬機底層的方法,start0()方法執行后,最終會啟動線程并回調此線程對象的run()方法。
線程對象的兩種創建方式造就了run()方法執行后得到兩種可能性。一種是繼承自Thread類的,相當于直接重寫了run()方法,另外一種就是實現了Runnable接口的,最終通過回調target.run()方法,回調到Runnable接口實現類的run()方法。
不管使用線程創建方式中的哪一種,最終都會回調指定對象的run()方法,所以在前面實現類時都要重寫run()方法,如圖1-4所示。

圖1-3 Thread類start()核心源代碼

圖1-4 官方Thread類run()方法
修改FourMain類,代碼如下:

執行結果如下:

注意:觀察執行結果,并思考線程啟動的方式。
推薦閱讀
- 深度實踐OpenStack:基于Python的OpenStack組件開發
- 大學計算機基礎(第三版)
- Java EE 6 企業級應用開發教程
- 深入淺出Windows API程序設計:編程基礎篇
- Web Application Development with R Using Shiny(Second Edition)
- 實戰Java高并發程序設計(第3版)
- Python:Master the Art of Design Patterns
- 常用工具軟件立體化教程(微課版)
- C++寶典
- Regression Analysis with Python
- 代替VBA!用Python輕松實現Excel編程
- MySQL程序員面試筆試寶典
- Learning Kotlin by building Android Applications
- Sitecore Cookbook for Developers
- Mastering Data Analysis with R