Java多線程一(基本概念)

進程

狹義定義:進程是正在運行的程序的實例

廣義定義:進程是一個具有一定獨立功能的程序關于某個數據集合的一次運行活動。,進程是由進程控制塊程序段、數據段三部分組成,它在傳統的操作系統中,進程既是基本的分配單元,也是基本的執行單元。

進程的概念主要有兩點:第一,進程是一個實體。每一個進程都有它自己的地址空間,一般情況下,包括文本區域(text region)、數據區域(data region)和堆棧(stack region)。文本區域存儲處理器執行的代碼;數據區域存儲變量和進程執行期間使用的動態分配的內存;堆棧區域存儲著活動過程調用的指令和本地變量。第二,進程是一個“執行中的程序”。程序是一個沒有生命的實體,只有處理器賦予程序生命時(操作系統執行之),它才能成為一個活動的實體,我們稱其為進程

進程的特征

動態性:進程的實質是程序在多道程序系統中的一次執行過程,進程是動態產生,動態消亡的。

并發性:任何進程都可以同其他進程一起并發執行

獨立性:進程是一個能獨立運行的基本單位,同時也是系統分配資源和調度的獨立單位;

異步性:由于進程間的相互制約,使進程具有執行的間斷性,即進程按各自獨立的、不可預知的速度向前推進

結構特征:進程由程序、數據和進程控制塊三部分組成。

多個不同的進程可以包含相同的程序:一個程序在不同的數據集里就構成不同的進程,能得到不同的結果;但是執行過程中,程序不能發生改變。

進程的狀態


進程的狀態

進程的創建

進程創建是操作系統執行程序的需要或者用戶或進程要求創建一個新的進程。進程創建首先是在進程表中為進程建立一個進程控制塊PCB,采用fork()系統調用將復制執行進程的PCB塊,U區和內存圖像到新的進程。 主要內容包括:進程創建原語、fork()系統調用的編程舉例和UNIX V6的fork()源碼分析。

線程

概念:線程是進程中的一個實體,是被系統獨立調度和分派的基本單位,線程自己不擁有系統資源,只擁有一點兒在運行中必不可少的資源,但它可與同屬一個進程的其它線程共享進程所擁有的全部資源。一個線程可以創建和撤消另一個線程,同一進程中的多個線程之間可以并發執行。

組成:線程只由相關堆棧系統棧或用戶棧寄存器和線程控制表TCB組成。寄存器可被用來存儲線程內的局部變量,但不能存儲其他線程的相關變量

守護線程:守護線程是特殊的線程,一般用于在后臺為其他線程提供服務.

Java中,isDaemon():判斷一個線程是否為守護線程.

Java中,setDaemon():設置一個線程為守護線程.

線程的狀態:

線程狀態

線程優先級:雖然我們說線程是并發運行的。然而事實常常并非如此。正如前面談到的,當系統中只有一個CPU時,以某種順序在單CPU情況下執行多線程被稱為調度(scheduling)。Java采用的是一種簡單、固定的調度法,即固定優先級調度。這種算法是根據處于可運行態線程的相對優先級來實行調度。當線程產生時,它繼承原線程的優先級。在需要時可對優先級進行修改。在任何時刻,如果有多條線程等待運行系統選擇優先級最高的可運行線程運行。只有當它停止、自動放棄、或由于某種原因成為非運行態低優先級的線程才能運行。如果兩個線程具有相同的優先級,它們將被交替地運行。 Java實時系統的線程調度算法還是強制性的,在任何時刻,如果一個比其他線程優先級都高的線程的狀態變為可運行態,實時系統將選擇該線程來運行。一個應用程序可以通過使用線程中的方法setPriority(int),來設置線程的優先級大小。

同步線程:許多線程在執行中必須考慮與其他線程之間共享數據或協調執行狀態。這就需要同步機制。在Java中每個對象都有一把鎖與之對應。

死鎖:如果程序中有幾個競爭資源的并發線程,那么保證均衡是很重要的。系統均衡是指每個線程在執行過程中都能充分訪問有限的資源。系統中沒有餓死和死鎖的線程。Java并不提供對死鎖的檢測機制。對大多數的Java程序員來說防止死鎖是一種較好的選擇。最簡單的防止死鎖的方法是對競爭的資源引入序號,如果一個線程需要幾個資源,那么它必須先得到小序號的資源,再申請大序號的資源

進程與線程的關系

通常在一個進程中可以包含若干個線程,它們可以利用進程所擁有的資源,在引入線程操作系統中,通常都是把進程作為分配資源的基本單位,而把線程作為獨立運行和獨立調度的基本單位,由于線程比進程更小,基本上不擁有系統資源,故對它的調度所付出的開銷就會小得多,能更高效的提高系統內多個程序間并發執行的程度。

當下推出的通用操作系統都引入了線程,以便進一步提高系統的并發性,并把它視為現代操作系統的一個重要指標。


進程與線程的關系
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容