91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java中進程和線程的示例分析

發布時間:2021-08-08 08:56:52 來源:億速云 閱讀:194 作者:小新 欄目:開發技術

小編給大家分享一下java中進程和線程的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

為什么會有進程

在簡單的批處理操作系統中,作業時串行執行的,即一個作業一旦開始執行,它就會計算機系統的所有資源,直到運行結束之后,下一個作業才可以繼續執行。

在多道程序設計批處理的系統中,多個作業可以被載入內存,從宏觀上看,多個作業并行執行,他們共享處理器、內存等計算機資源。

在分時系統中,為支持多用戶交互,處理器在時間維度上被劃為若干間隙,在每一時間間隙,一個用戶完全占有計算器資源。由于時間間隙很短,在宏觀上看,計算機任可以同時為多個用戶服務、提高計算機與用戶交互的效率。
程序或作業的并發執行是現代操作系統的一個基本特征。并發執行的程序必要滿足以下幾個特征才能稱為真正意義上的并發執行:

資源共享的需求、相互隔離的要求、通信和同步的要求

要實現多個程序的并發執行,它們必需能夠共享處理器、內存以及I/O設備等計算機資源。

盡管多個程序并發執行,但在邏輯上各個程序應當是相互獨立的,即一個程序的執行結果不受其它程序執行的影響。

有時候,程序之間不完全是相互隔離的,而是存在依賴關系的,即需要進行通信和同步。

所以要實現真正意義上的并發,單純的依靠處理器的指令循環是遠遠不夠的。

進程的概念

進程是對一個計算任務的抽象和封裝,使每個計算任務更好地實現隔離性、資源共享性和同步的需求。

進程的說法有很多、可以這樣理解進程的概念:

1.進程是計算機程序在處理器上執行時所發生的活動,即進程時程序的一次執行活動

2.進程是對一次計算任務的封裝和抽象、它是一個由執行流、一個數據集、和相關的系統的資源組成的一個活動單元。

3.進程是程序執行的一次實例,是動態的概念、而程序本質上是一個規則(是一個二進制串、也就是機器指令)、通常以文件的形式存在、是靜態的概念、一個計算機可以同時運行一個程序的多個進程。

4.進程之間共享計算機資源、并在邏輯上相互獨立、或者通過同步機制相互的協調,共同的完成一項計算任務。

進程的特征

進程是由多程序的并發執行而引出的,它和程序是兩個截然不同的概念。進程的基本特征是對比單個程序的順序執行提出的,也是對進程管理提出的基本要求。

動態性:進程是程序的一次執行,它有著創建、活動、暫停、終止等過程,具有一定的生命周期,是動態地產生、變化和消亡的。動態性是進程最基本的特征。

并發性:指多個進程實體,同存于內存中,能在一段時間內同時運行,并發性是進程的重要特征,同時也是操作系統的重要特征。引入進程的目的就是為了使程序能與其他進程的程序并發執行,以提高資源利用率。

獨立性:指進程實體是一個能獨立運行、獨立獲得資源和獨立接受調度的基本單位。凡未建立PCB的程序都不能作為一個獨立的單位參與運行。

異步性:由于進程的相互制約,使進程具有執行的間斷性,即進程按各自獨立的、 不可預知的速度向前推進。異步性會導致執行結果的不可再現性,為此,在操作系統中必須配置相應的進程同步機制。

結構性:每個進程都配置一個PCB對其進行描述。從結構上看,進程實體是由程序段、數據段和進程控制段三部分組成的。

線程

是操作系統能夠進行運算調度的最小單位。它被包含在進程之中,是進程中的實際運作單位。一條線程指的是進程中一個單一順序的控制流,一個進程中可以并發多個線程,每條線程并行執行不同的任務。

java中進程和線程的示例分析

線程的結構

線程控制塊:與進程控制塊類似,包含了描述線程屬性的信息,如線程ID、線程的棧指針、程序計數器、條件碼和通用寄存器的值等,以及線程的執行狀態(運行、就緒等)。

線程執行棧:保存一個線程執行過程中的活動記錄,包括用戶棧和內核棧。其中用戶棧用于保存過程調用的活動記錄,內核棧用于保存系統調用的活動記錄。執行棧對于每個線程來說都是私有的,因此不同線程的執行流不會發生相互干擾。

線程局部存儲(TLS,Thread Local Storage):是某些操作系統為線程單獨提供的私有空間,用于存儲每個線程私有的全局變量,即一個線程內部的各個過程調用都能訪問、但其他線程不能訪問的變量。

進程之中創建線程的優點

在一個進程之中創建線程的優點:

1.在一個已有的進程之中創建一個線程比創建一個新的進程所需的開銷時間要少許多、Mach開發者的研究表明、創建一個線程比創建一個進程快10倍。

2.終止一個線程比終止一個進程所花費的時間要少

3.同一個進程內線程之間的切換所花費的時間要比進程之間切換所花費的時間要少

4.線程提高了程序之間的通信效率、在大多數的操作系統中、獨立的進程之間的通信需要內核的介入、但是同一個進程之中的線程共享內存和文件、同一個進程之中的線程之間的通信不需要內核的介入。

進程和線程的區別

地址空間:

線程共享本進程的地址空間,而進程之間是獨立的地址空間。

資源:

線程共享本進程的資源如內存、I/O、cpu等,不利于資源的管理和保護,而進程之間的資源是獨立的,能很好的進行資源管理和保護。

健壯性:

多進程要比多線程健壯,一個進程崩潰后,在保護模式下不會對其他進程產生影響,但是一個線程崩潰整個進程都死掉。

執行過程:

每個獨立的進程有一個程序運行的入口、順序執行序列和程序入口,執行開銷大。

線程不能獨立執行,必須依存在應用程序中,由應用程序提供多個線程執行控制,執行開銷小。

可并發性:

兩者均可并發執行。

切換時:

進程切換時,消耗的資源大,效率高。所以涉及到頻繁的切換時,使用線程要好于進程。同樣如果要求同時進行并且又要共享某些變量的并發操作,只能用線程不能用進程。

線程是處理器調度的最小單位,但是進程時操作系統資源分配的最小單位。

進程和線程之間的關系

線程:進程描述示例系統
1:1一個進程中只有一個線程比如UNIX
M:1可以在一個進程之中創建多個的線程、這些線程共享進程用戶的地址空間Windows NT、Linux、MACH、Solaris
1:M一個線程可以從一個進程環境遷移到另一個進程環境中RS、Emerald
M:N也就是結合了M:1和1:M的情況TRIX

以上是“java中進程和線程的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

绥化市| 沙湾县| 定襄县| 武宣县| 格尔木市| 盐津县| 神农架林区| 鲜城| 南川市| 方山县| 成都市| 格尔木市| 永州市| 宝鸡市| 汤原县| 远安县| 横山县| 吕梁市| 辉南县| 武夷山市| 称多县| 永吉县| 出国| 巴中市| 云龙县| 凯里市| 禄劝| 新宾| 资阳市| 宿州市| 萍乡市| 马公市| 沁阳市| 昆山市| 菏泽市| 土默特右旗| 根河市| 屯昌县| 吉安县| 凯里市| 台东县|