Java中內(nèi)核線程理論及實(shí)例詳解
1、概念
內(nèi)核線程是直接由操作系統(tǒng)內(nèi)核控制的,內(nèi)核通過調(diào)度器來完成內(nèi)核線程的調(diào)度并負(fù)責(zé)將其映射到處理器上執(zhí)行。內(nèi)核態(tài)下的線程執(zhí)行速度理論上是最高的,但是用戶不會(huì)直接操作內(nèi)核線程,而是通過內(nèi)核線程的接口——輕量級(jí)進(jìn)程來間接的使用內(nèi)核線程。這種輕量級(jí)進(jìn)程就是所謂的線程。
2、優(yōu)點(diǎn)
由于內(nèi)核線程的支持,每一個(gè)線程都是一個(gè)獨(dú)立的單元,因此就算某一個(gè)線程掛掉了,也不會(huì)導(dǎo)致整個(gè)進(jìn)程掛掉。
3、缺點(diǎn)
這種實(shí)現(xiàn)方式也存在局限性。由于是基于內(nèi)核線程實(shí)現(xiàn)的,所以當(dāng)涉及到線程的操作時(shí)(創(chuàng)建、運(yùn)行、切換等)就涉及到系統(tǒng)調(diào)度,而系統(tǒng)調(diào)度則會(huì)導(dǎo)致用戶態(tài)和內(nèi)核態(tài)之間的來回切換,代價(jià)是比較昂貴的。
知識(shí)點(diǎn)擴(kuò)展:
線程的實(shí)現(xiàn)
線程是比進(jìn)程更輕量級(jí)的調(diào)度執(zhí)行單位,在linux里面,線程和進(jìn)程沒有什么區(qū)別,唯一的就是在地址空間,線程的切換虛擬內(nèi)存空間依然是相同的,但是進(jìn)程切換是不同的。
目前主流的操作系統(tǒng)都提供的線程實(shí)現(xiàn),java則提供的線程實(shí)現(xiàn)方法都是native的,因?yàn)椴煌挠布筒僮飨到y(tǒng)提供線程調(diào)度方式并不盡相同,所以java沒用采用和平臺(tái)無關(guān)的統(tǒng)一手段來實(shí)現(xiàn)。
用戶線程實(shí)現(xiàn)
用戶線程指不需要內(nèi)核支持而在用戶程序中實(shí)現(xiàn)的線程,其不依賴于操作系統(tǒng)核心,應(yīng)用進(jìn)程利用線程庫提供創(chuàng)建、同步、調(diào)度和管理線程的函數(shù)來控制用戶線程。
不需要用戶態(tài)/核心態(tài)切換,速度快,操作系統(tǒng)內(nèi)核不知道多線程的存在,因此一個(gè)線程阻塞將使得整個(gè)進(jìn)程(包括它的所有線程)阻塞。使用用戶線程實(shí)現(xiàn)的程序一般都比較復(fù)雜,java曾經(jīng)用過,不過最后還是放棄了。
優(yōu)點(diǎn):
切換由用戶態(tài)程序自己控制內(nèi)核切換,不需要內(nèi)核干涉,少了進(jìn)出內(nèi)核態(tài)的消耗。
缺點(diǎn):
多核處理器很難講線程映射到其他處理器上,單線程阻塞會(huì)造成該進(jìn)程阻塞。
到此這篇關(guān)于Java中內(nèi)核線程理論及實(shí)例詳解的文章就介紹到這了,更多相關(guān)Java中內(nèi)核線程是什么內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Eclipse中導(dǎo)入Maven Web項(xiàng)目并配置其在Tomcat中運(yùn)行圖文詳解
這篇文章主要介紹了Eclipse中導(dǎo)入Maven Web項(xiàng)目并配置其在Tomcat中運(yùn)行圖文詳解,需要的朋友可以參考下2017-12-12
Springboot Thymeleaf字符串對象實(shí)例解析
這篇文章主要介紹了Springboot Thymeleaf字符串對象實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2007-09-09
springmvc下實(shí)現(xiàn)登錄驗(yàn)證碼功能示例
本篇文章主要介紹了springmvc下實(shí)現(xiàn)登錄驗(yàn)證碼功能示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02
淺談Java list.remove( )方法需要注意的兩個(gè)坑
這篇文章主要介紹了淺談Java list.remove( )方法需要注意的兩個(gè)坑,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12
微服務(wù)鏈路追蹤Spring Cloud Sleuth整合Zipkin解析
這篇文章主要為大家介紹了微服務(wù)鏈路追蹤Spring Cloud Sleuth整合Zipkin解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
springboot整合Quartz實(shí)現(xiàn)動(dòng)態(tài)配置定時(shí)任務(wù)的方法
本篇文章主要介紹了springboot整合Quartz實(shí)現(xiàn)動(dòng)態(tài)配置定時(shí)任務(wù)的方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-10-10
關(guān)于spring中不同包中類名相同報(bào)錯(cuò)問題的總結(jié)
這篇文章主要介紹了關(guān)于spring中不同包中類名相同報(bào)錯(cuò)問題的總結(jié),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06

