自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

大數(shù)據(jù)開發(fā):Java線程與進程區(qū)別是這樣?

大數(shù)據(jù)
線程?進程?會不會傻傻分不清楚?應(yīng)該如何更好的去理解JAVA中的線程進程從而將他們的價值作用有效發(fā)揮到極致呢。接著往下看吧,最詳細的線程進程介紹。

 在JAVA中幾乎任何的操作系統(tǒng)都支持運行多個任務(wù),通常一個任務(wù)就是一個程序,而一個程序就是一個進程。當一個進程運行時,內(nèi)部可能包括多個順序執(zhí)行流,每個順序執(zhí)行流就是一個線程。

[[392277]]

一、什么是進程

進程是資源(CPU、內(nèi)存等)分配的基本單位,它是程序執(zhí)行時的一個實例。程序運行時系統(tǒng)就會創(chuàng)建一個進程,并為它分配資源,然后把該進程放入進程就緒隊列,進程調(diào)度器選中它的時候就會為它分配CPU時間,程序開始真正運行。進程的優(yōu)點是提高CPU運行效率,在同一時間內(nèi)執(zhí)行多個程序,即并發(fā)執(zhí)行。但是從嚴格上講,也不是絕對的同一時刻執(zhí)行多個程序,只不過CPU在執(zhí)行時通過時間片等調(diào)度算法不同進程高速切換。進程類似于人類,是被產(chǎn)生的,有或長或短的有效生命,可以產(chǎn)生一個或多個子進程,最終都要消亡的。每個子進程都只有一個父進程。在這里順帶提下,Linux里通過調(diào)用fork()函數(shù)產(chǎn)生子進程。子進程在創(chuàng)建時,它幾乎和父進程相同。它是從父進程的地址空間copy過來的。盡管它們可以共享有程序代碼的頁,但是它們各自有獨立的數(shù)據(jù)空間。對子進程內(nèi)存的修改不會影響父進程,反之亦然。

 


 

二、 什么是線程

線程是一條執(zhí)行路徑,是程序執(zhí)行時的最小單位,它是進程的一個執(zhí)行流,是CPU調(diào)度和分派的基本單位,一個進程可以由很多個線程組成,線程間共享進程的所有資源,每個線程有自己的堆棧和局部變量。線程由CPU獨立調(diào)度執(zhí)行,在多CPU環(huán)境下就允許多個線程同時運行。同樣多線程也可以實現(xiàn)并發(fā)操作,每個請求分配一個線程來處理。線程是一條可以執(zhí)行的路徑。多線程就是同時有多條執(zhí)行路徑在同時(并行)執(zhí)行。

三、線程與進程的特點

(1)進程特點:

1:獨立性:進程是系統(tǒng)中獨立存在的實體,它可以獨立擁有資源,每一個進程都有自己獨立的地址空間,沒有進程本身的運行,用戶進程不可以直接訪問其他進程的地址空間。

2:動態(tài)性:進程和程序的區(qū)別在于進程是動態(tài)的,進程中有時間的概念,進程具有自己的生命周期和各種不同的狀態(tài)。

3:并發(fā)性:多個進程可以在單個處理器上并發(fā)執(zhí)行,互不影響。

 

(2)線程特點

1:輕型實體

線程中的實體單位基本上不擁有系統(tǒng)資源,只是有一點必不可少的、能保證獨立運行的資源。線程的實體包括程序、數(shù)據(jù)和TCB。線程是動態(tài)概念,他的動態(tài)特性由線程控制塊TCB描述。

2:獨立調(diào)度和分派的基本單位

再多線程OS中,線程是能獨立運行的基本單位,因而也是獨立調(diào)度和分派的基本單位。但由于線程很“輕”,故線程的切換非常迅速且開銷小(在統(tǒng)一進程中的)。

3:可并發(fā)執(zhí)行

在一個進程中的多個線程之間,可以并發(fā)執(zhí)行,甚至允許在一個進程中所有線程都能并發(fā)執(zhí)行;同樣,不同進程中的線程也能并發(fā)執(zhí)行,充分利用和發(fā)揮了處理機與外圍設(shè)備并行工作的能力。

4:共享進程資源

在同一進程中的各個線程,都可以共享該進程所擁有的資源,這首先表現(xiàn)在:所有線程都具有相同的地址空間(進程的地址空間),這意味者,線程可以訪問該地址空間的每一個虛地址;此外,還可以訪問該進程所擁有的已打開文件、定時器、信號量機構(gòu)等。由于同一個進程內(nèi)的線程共享內(nèi)存和文件,所以線程之間互相通信不必調(diào)用內(nèi)核。

四、進程和線程的區(qū)別:

1、容易創(chuàng)建新線程。但是,創(chuàng)建新進程需要重復(fù)父進程。

2、線程可以控制同一進程的其他線程。進程無法控制兄弟進程,只能控制其子進程。

3、進程擁有自己的內(nèi)存空間。線程使用進程的內(nèi)存空間,且要和該進程的其他線程共享這個空間;而不是在進程中給每個線程單獨劃分一點空間。

4、(同一進程中的)線程在共享內(nèi)存空間中運行,而進程在不同的內(nèi)存空間中運行。

5、線程可以使用wait(),notify(),notifyAll()等方法直接與其他線程(同一進程)通信;而,進程需要使用“進程間通信”(IPC)來與操作系統(tǒng)中的其他進程通信。

以上就是關(guān)于大數(shù)據(jù)開發(fā)基礎(chǔ)之JAVA線程進程的基礎(chǔ)知識,學(xué)以致用是大數(shù)據(jù)里面最好的學(xué)習方式,能讓你快速在行業(yè)中占領(lǐng)一席之地。

 

責任編輯:華軒 來源: 今日頭條
相關(guān)推薦

2021-05-06 15:08:40

開發(fā)前端后端

2025-04-17 07:41:07

進程線程窗口

2011-11-07 09:31:20

大數(shù)據(jù)Hadoop

2022-10-12 09:01:52

Linux內(nèi)核線程

2022-05-26 08:31:41

線程Java線程與進程

2019-06-03 09:13:11

線程進程多線程

2021-04-12 09:35:23

大數(shù)據(jù)據(jù)分析數(shù)據(jù)

2009-09-16 08:43:51

linux進程線程

2010-03-16 17:16:38

Java多線程

2021-03-15 14:00:56

PythonC語言編程語言

2020-09-24 17:15:11

前端Web移動

2014-12-11 16:40:31

Android|進程線程

2022-02-07 11:55:00

linux進程線程

2022-06-07 07:37:40

線程進程開發(fā)

2020-01-18 18:37:00

Java并行計算數(shù)據(jù)庫

2012-07-31 15:52:48

云計算網(wǎng)格計算

2016-09-07 14:54:19

大數(shù)據(jù)BI

2019-11-25 09:41:15

大數(shù)據(jù)傳統(tǒng)數(shù)據(jù)區(qū)別

2013-07-05 09:59:23

2022-02-08 07:02:32

進程線程操作系統(tǒng)
點贊
收藏

51CTO技術(shù)棧公眾號