java面試(多線程總結)

線程和進程的基本定義

線程:是一個比進程更小的執行單位,能夠完成進程中的一個功能,也被稱爲輕量級進程。一個進程在其執行的過程中可以產生多個線程。

【注】線程與進程不同的是:同類的多個線程共享進程的堆和方法區資源,但每個線程有自己的程序計數器、虛擬機棧和本地方法棧,所以系統在產生一個線程,或是在各個線程之間作切換工作時,負擔要比進程小得多

進程:在操作系統中能夠獨立運行,並且作爲資源分配的基本單位。它表示運行中的程序。系統運行一個程序就是一個進程從創建、運行到消亡的過程。

  • 程序計數器爲什麼是私有的?

程序計數器主要有下面兩個作用:

    1. 字節碼解釋器通過改變程序計數器來依次讀取指令,從而實現代碼的流程控制,如:順序執行、選擇、循環、異常處理。
    2. 在多線程的情況下,程序計數器用於記錄當前線程執行的位置,從而當線程被切換回來的時候能夠知道該線程上次運行到哪兒了。

(需要注意的是,如果執行的是 native 方法,那麼程序計數器記錄的是 undefined 地址,只有執行的是 Java 代碼時程序計數器記錄的纔是下一條指令的地址。)

所以,程序計數器私有主要是爲了線程切換後能恢復到正確的執行位置

  •  虛擬機
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章