- 線程
線程是CPU調(diào)度的基本單位,可以把一個(gè)進(jìn)程的資源分配和執(zhí)行調(diào)度分開,各個(gè)線程既可以共享進(jìn)程資源,又可以獨(dú)立調(diào)度
- 實(shí)現(xiàn)線程的3種方式
- 使用內(nèi)核線程實(shí)現(xiàn):直接由操作系統(tǒng)內(nèi)核支持的線程,由內(nèi)核來完成線程切換,由內(nèi)核通過操縱調(diào)度器對(duì)線程進(jìn)行調(diào)度,并負(fù)責(zé)將線程的任務(wù)映射到各個(gè)處理器上
- 使用用戶線程實(shí)現(xiàn):建立在用戶空間的線程庫上,系統(tǒng)內(nèi)核不能感知線程存在的實(shí)現(xiàn)
- 使用用戶線程加輕量級(jí)進(jìn)程混合:將內(nèi)核進(jìn)程和用戶線程一起使用的實(shí)現(xiàn)方式
- Java 線程調(diào)度
系統(tǒng)為線程分配處理器使用權(quán)的過程
- 協(xié)同式線程調(diào)度:線程的執(zhí)行時(shí)間由線程本身來控制,線程把自己的工作執(zhí)行完了之后,要主動(dòng)通知系統(tǒng)切換到另一個(gè)線程上
好處:實(shí)現(xiàn)簡(jiǎn)單,由于線程把自己的事情干完后才會(huì)進(jìn)行線程切換,切換操作對(duì)線程自己是可知的
壞處:線程執(zhí)行時(shí)間不可控制,如果一個(gè)線程編寫有問題,一直不告訴系統(tǒng)進(jìn)行線程切換,程序就會(huì)一直阻塞在那里 - 搶占式線程調(diào)度
每個(gè)線程將由系統(tǒng)來分配執(zhí)行時(shí)間,線程的切換不由線程本身來決定。
好處:線程的執(zhí)行時(shí)間是系統(tǒng)可控的,不會(huì)一個(gè)線程導(dǎo)致整個(gè)線程阻塞的問題
-
線程狀態(tài)轉(zhuǎn)換