Java執行緒面試題(04) Java中程式與執行緒的真實區別
簡介
程式設計面試的一個常見問題是執行緒和程式之間有什麼區別?那麼它們之間的主要區別在於一個程式是一個正在執行一些程式碼的程式,而一個執行緒是這個程式中的一個獨立的執行路徑。一個程式可以有多個執行緒來完成獨立的任務,例如一個用於從磁碟讀取資料的執行緒,一個用於處理該資料的執行緒以及另一個用於通過網路傳送該資料的執行緒。這種提高吞吐量和更好地利用CPU能力的技術也被稱為多執行緒技術。從技術上講,執行緒之間最顯著的區別是地址空間和上下文切換。程式中的所有執行緒共享相同的地址空間,但程式有自己的地址空間。類似地,程式之間的上下文切換比執行緒之間的上下文切換有更大開銷。
Thread vs Process
接下來,我們從作業系統的角度,或者程式語言的角度如Java,來分析執行緒和程式之間的差別。
地址空間
來自同一程式的所有執行緒共享建立程式的記憶體空間,另一方面,每個程式都有自己的地址空間。
通訊機制
執行緒可以直接與同一程式的其他執行緒通訊。許多程式語言,如Java提供了執行緒間通訊的工具。它比程式間通訊開銷低得多。
開銷
在後設資料,上下文切換以及CPU和記憶體要求方面,與程式相比,執行緒的開銷更少。
資料段
執行緒可以直接訪問其程式的資料段,單個程式擁有自己的父程式資料段的副本。
建立
新執行緒可以很容易地建立,例如在Java中,您可以通過建立一個Thread類的物件來建立一個新的執行緒並呼叫start()方法,而新程式需要父程式的複製。
行為
對父執行緒的改變,例如守護程式可能會影響程式的其他執行緒的行為,但對父程式的更改不會影響子程式。
存在
一個執行緒不能沒有程式就存在。而且,一個程式至少有一個執行緒來完成這個工作,例如Java程式的主執行緒。
上下文切換
由於來自同一程式的所有執行緒共享相同的地址空間,它們之間的執行緒間通訊和上下文切換比程式之間的程式間通訊和上下文切換快得多。
這是每個程式設計師都應該知道的執行緒和程式之間的一些根本區別。對比完區別,我們來看一下執行緒與程式相似的地方。
相似
執行緒和程式在執行程式碼的意義上有許多相似之處,既有ID,執行時間,優先順序和退出狀態。兩者都可以建立另一個程式和執行緒,但是執行緒對同一程式的其他執行緒有更大程度的控制。程式只能控制子程式。
總結
這些就是關於作業系統中的執行緒和程式之間的區別,它適用於Java或任何其他程式語言。執行緒是輕量級的,在程式中是一個獨立的執行路徑。它們共享相同的程式地址空間,與程式相比,開銷更小。程式是一個單獨的程式,需要自己的地址空間,比執行緒開銷更多。此外,執行緒和程式之間的差異取決於作業系統的實現。例如,Linux中的一個執行緒和一個程式之間的差別比Windows小很多。
相關文章
- Java執行緒面試題(02) Java執行緒中如何避免死鎖Java執行緒面試題
- 【Java面試題】Java面試之多執行緒!Java面試題執行緒
- 【面試】執行緒程式區別面試執行緒
- Java多執行緒中執行緒安全與鎖問題Java執行緒
- Java執行緒中斷與終止執行緒執行Java執行緒
- java多執行緒面試題Java執行緒面試題
- Java執行緒中yield與join方法的區別Java執行緒
- Java執行緒:執行緒中斷Java執行緒
- Java多執行緒1:程式與執行緒概述Java執行緒
- Java執行緒:執行緒的同步與鎖Java執行緒
- 程式與執行緒區別執行緒
- 程式與執行緒的區別執行緒
- Java 執行緒中斷(interrupt)與阻塞 (park)的區別Java執行緒
- Java執行緒面試題 Top 50Java執行緒面試題
- Java多執行緒-鎖的區別與使用Java執行緒
- Java面試題:執行緒池內“鬧情緒”的執行緒,怎麼辦?Java面試題執行緒
- java架構-執行緒和程式的區別Java架構執行緒
- Java多執行緒面試高配問題---多執行緒(3)🧵Java執行緒面試
- 聊聊面試中的 Java 執行緒池面試Java執行緒
- Java與執行緒Java執行緒
- Java多執行緒——執行緒Java執行緒
- java中執行緒池的生命週期與執行緒中斷Java執行緒
- Java 程式中的多執行緒Java執行緒
- Java中的執行緒Java執行緒
- 程式設計思想之多執行緒與多程式(3):Java 中的多執行緒程式設計執行緒Java
- Java併發實戰一:執行緒與執行緒安全Java執行緒
- Java 執行緒和作業系統的執行緒有啥區別?Java執行緒作業系統
- Java程式設計師面試中的多執行緒問題Java程式設計師面試執行緒
- 深入理解JVM(③)執行緒與Java的執行緒JVM執行緒Java
- Java程式和執行緒關係及區別Java執行緒
- JAVA執行緒面試題書目錄Java執行緒面試題
- 15個Java多執行緒面試題Java執行緒面試題
- 50個Java多執行緒面試題Java執行緒面試題
- Java中啟動執行緒的方式及區別Java執行緒
- java多執行緒執行問題Java執行緒
- Java多執行緒-執行緒中止Java執行緒
- Java多執行緒——執行緒池Java執行緒
- 【Java面試】如何中斷一個正在執行的執行緒?Java面試執行緒