Java面試中經常被面試官問到的問題,進程和線程的區別?

Java面試中經常被面試官問到的問題,進程和線程的區別?

鎮樓小姐姐

可獲得兩大新人禮包

36份一線互聯網Java面試電子書

84個Java稀缺面試題視頻


一、關於進程和線程,首先從定義上理解就有所不同

1、進程是什麼?

是具有一定獨立功能的程序、它是系統進行資源分配和調度的一個獨立單位,重點在系統調度和單獨的單位,也就是說進程是可以獨 立運行的一段程序。

2、線程又是什麼?

線程進程的一個實體,是CPU調度和分派的基本單位,他是比進程更小的能獨立運行的基本單位,線程自己基本上不擁有系統資源。

在運行時,只是暫用一些計數器、寄存器和棧 。

二、他們之間的關係

1、一個線程只能屬於一個進程,而一個進程可以有多個線程,但至少有一個線程(通常說的主線程)。

2、資源分配給進程,同一進程的所有線程共享該進程的所有資源。

3、線程在執行過程中,需要協作同步。不同進程的線程間要利用消息通信的辦法實現同步。

4、處理機分給線程,即真正在處理機上運行的是線程。

5、線程是指進程內的一個執行單元,也是進程內的可調度實體。

三、從三個角度來剖析二者之間的區別

1、調度:線程作為調度和分配的基本單位,進程作為擁有資源的基本單位。

2、併發性:不僅進程之間可以併發執行,同一個進程的多個線程之間也可以併發執行。

3、擁有資源:進程是擁有資源的一個獨立單位,線程不擁有系統資源,但可以訪問隸屬於進程的資源。


分享到:


相關文章: