Java中的內核線程是什么?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
Java主要應用于:1. web開發;2. Android開發;3. 客戶端開發;4. 網頁開發;5. 企業級應用開發;6. Java大數據開發;7.游戲開發等。
內核線程是直接由操作系統內核控制的,內核通過調度器來完成內核線程的調度并負責將其映射到處理器上執行。內核態下的線程執行速度理論上是最高的,但是用戶不會直接操作內核線程,而是通過內核線程的接口——輕量級進程來間接的使用內核線程。這種輕量級進程就是所謂的線程。
由于內核線程的支持,每一個線程都是一個獨立的單元,因此就算某一個線程掛掉了,也不會導致整個進程掛掉。
這種實現方式也存在局限性。由于是基于內核線程實現的,所以當涉及到線程的操作時(創建、運行、切換等)就涉及到系統調度,而系統調度則會導致用戶態和內核態之間的來回切換,代價是比較昂貴的。
知識點擴展:
線程的實現
線程是比進程更輕量級的調度執行單位,在linux里面,線程和進程沒有什么區別,唯一的就是在地址空間,線程的切換虛擬內存空間依然是相同的,但是進程切換是不同的。
目前主流的操作系統都提供的線程實現,java則提供的線程實現方法都是native的,因為不同的硬件和操作系統提供線程調度方式并不盡相同,所以java沒用采用和平臺無關的統一手段來實現。
用戶線程實現
用戶線程指不需要內核支持而在用戶程序中實現的線程,其不依賴于操作系統核心,應用進程利用線程庫提供創建、同步、調度和管理線程的函數來控制用戶線程。
不需要用戶態/核心態切換,速度快,操作系統內核不知道多線程的存在,因此一個線程阻塞將使得整個進程(包括它的所有線程)阻塞。使用用戶線程實現的程序一般都比較復雜,java曾經用過,不過最后還是放棄了。
優點:
切換由用戶態程序自己控制內核切換,不需要內核干涉,少了進出內核態的消耗。
缺點:
多核處理器很難講線程映射到其他處理器上,單線程阻塞會造成該進程阻塞。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。