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