線程的狀態(tài)
新建(New):在程序中用構(gòu)造方法創(chuàng)建一個(gè)線程對(duì)象后,新的線程對(duì)象便處于新建狀態(tài),此時(shí),他已經(jīng)有了相應(yīng)的內(nèi)存空間和其他資源,但還不處于課運(yùn)行狀態(tài)。
就緒(Runable):新建線程對(duì)象后,可調(diào)用線程start()方法來(lái)啟動(dòng)線程。當(dāng)線程啟東時(shí),線程就進(jìn)入就緒狀態(tài)。此時(shí),線程進(jìn)入線程隊(duì)列排隊(duì),等待CPU服務(wù),即具備了運(yùn)行條件。
運(yùn)行(Running):當(dāng)就緒狀態(tài)的線程被調(diào)用并獲得處理器資源時(shí),線程就進(jìn)入了運(yùn)行狀態(tài)。這時(shí),自動(dòng)調(diào)用線程對(duì)象的run()方法。run()方法定義了該線程的操作和功能。
阻塞(Blocked):一個(gè)正在執(zhí)行的線程在某些特殊情況下,如被認(rèn)為掛起或需要執(zhí)行耗時(shí)的輸入/ 輸出操作時(shí),會(huì)讓出CPU并暫時(shí)終止自己的行為,進(jìn)入堵塞狀態(tài)。進(jìn)入堵塞狀態(tài),在可執(zhí)行狀態(tài)下,如果調(diào)用 sleep(),suspend().wait()等方法,線程將進(jìn)入堵塞狀態(tài)。堵塞時(shí),線程不能進(jìn)入排隊(duì)隊(duì)列,只有當(dāng)引起 堵塞的原因被消除后,線程才可以轉(zhuǎn)入就緒狀態(tài)。
死亡(Dead):線程調(diào)用stop()方法或者run()方法執(zhí)行結(jié)束后,就處于死亡狀態(tài)。處于死亡狀態(tài)的線程將不具備繼續(xù)運(yùn)行的能力。
線程在計(jì)算機(jī)系統(tǒng)中的價(jià)值是什么?
線程(英語(yǔ):thread)是操作系統(tǒng)能夠進(jìn)行運(yùn)算調(diào)度的最小單位。它被包含在進(jìn)程之中,是進(jìn)程中的實(shí)際運(yùn)作單位。一條線程指的是進(jìn)程中一個(gè)單一順序的控制流,一個(gè)進(jìn)程中可以并發(fā)多個(gè)線程,每條線程并行執(zhí)行不同的任務(wù)。在Unix System V及SunOS中也被稱(chēng)為輕量進(jìn)程(lightweight processes),但輕量進(jìn)程更多指內(nèi)核線程(kernel thread),而把用戶線程(user thread)稱(chēng)為線程。
線程是獨(dú)立調(diào)度和分派的基本單位。線程可以為操作系統(tǒng)內(nèi)核調(diào)度的內(nèi)核線程,如Win32線程;由用戶進(jìn)程自行調(diào)度的用戶線程,如Linux平臺(tái)的POSIXThread;或者由內(nèi)核與用戶進(jìn)程,如Windows 7的線程,進(jìn)行混合調(diào)度。
同一進(jìn)程中的多條線程將共享該進(jìn)程中的全部系統(tǒng)資源,如虛擬地址空間,文件描述符和信號(hào)處理等等。但同一進(jìn)程中的多個(gè)線程有各自的調(diào)用棧(call stack),自己的寄存器環(huán)境(register context),自己的線程本地存儲(chǔ)(thread-local storage)。
一個(gè)進(jìn)程可以有很多線程,每條線程并行執(zhí)行不同的任務(wù)。
關(guān)鍵詞: 線程的狀態(tài) 都有什么 線程在計(jì)算機(jī) 系統(tǒng)中的價(jià)值