進程: 正在運行的程式,是系統進行資源分配和調用的獨立單位; 每一個進程都有它自己的記憶體空間和系統資源。 線程: 是進程中的單個順序控制流,是一條執行路徑 一個進程如果只有一條執行路徑,則稱為單線程程式 一個進程如果有多條執行路徑,則稱為多線程程式 多進程的意義: 可以在同一個時間段內執行多個任務; ...
進程:
- 正在運行的程式,是系統進行資源分配和調用的獨立單位;
- 每一個進程都有它自己的記憶體空間和系統資源。
線程:
- 是進程中的單個順序控制流,是一條執行路徑
- 一個進程如果只有一條執行路徑,則稱為單線程程式
- 一個進程如果有多條執行路徑,則稱為多線程程式
多進程的意義:
- 可以在同一個時間段內執行多個任務;
- 可以提高CPU的使用率;
多線程的意義:
- 是為了同步完成多項任務,不是為了提高運行效率,而是為了提高資源使用效率來提高系統的效率
併發與並行:
- 併發是物理上同時發生,指在同一時間點同時運行多個程式;
- 並行是邏輯上同時發生,指在同一時間段內運行多個程式;
進程和線程的關係:
- 一個線程只能屬於一個進程,而一個進程可以有多個線程,但至少有一個線程。
- 資源分配給進程,同一進程的所有線程共用該進程的所有資源。
- 處理機分給線程,即真正在處理機上運行的是線程。
- 線程在執行過程中,需要協作同步。不同進程的線程間要利用消息通信的辦法實現同步。
線程是指進程內的一個執行單元,也是進程內的可調度實體.
線程與進程的區別:
- 調度:線程作為調度和分配的基本單位,進程作為擁有資源的基本單位
- 併發性:不僅進程之間可以併發執行,同一個進程的多個線程之間也可併發執行
- 擁有資源:進程是擁有資源的一個獨立單位,線程不擁有系統資源,但可以訪問隸屬於進程的資源.
- 系統開銷:在創建或撤消進程時,由於系統都要為之分配和回收資源,導致系統的開銷明顯大於創建或撤消線程時的開銷。但是進程有獨立的地址空間,一個進程崩潰後,在保護模式下不會對其它進程產生影響,而線程只是一個進程中的不同執行路徑。線程有自己的堆棧和局部變數,但線程之間沒有單獨的地址空間,一個線程死掉就等於整個進程死掉,所以多進程的程式要比多線程的程式健壯,但在進程切換時,耗費資源較大,效率要差一些
問題一:
jvm虛擬機的啟動是單線程的還是多線程的?為什麼?
解答:
多線程的。
會有垃圾回收的守護線程,否則會記憶體溢出,加上程式的主線程,所以至少有兩個線程;