程序計數器為什么是線程私有的?


1. 程序計數器

1.1. 程序計數器的本質

從本質來看,程序技術器就是一塊比較小的內存空間。

1.2. 程序計數器的作用

程序計數器可以看作是當前線程所執行字節碼的行號指示器,也就是說,程序計數器這塊小空間里面記錄的是當前線程正在執行的字節碼的行號。字節碼解釋器通過改變計數器的值來獲取下一條要執行的字節碼。分支、循環、跳轉、異常處理、線程恢復等基礎功能都需要依賴這個計數器來完成。

1.3. 為什么程序計數器被設計成線程私有的?

假如現在有一本書,有好幾個同學都想看,我們采取這樣的策略讓所有同學都能看到:每個人看一天,不管看沒看完都要交給下一個人看,不斷循環,直到所有人看完。每個同學都有一個小卡片記錄自己看到了哪里,這樣下次輪到自己看的時候就能快速的接着上次看到的地方繼續看。

Java虛擬機中多線程采用時間片輪轉的方式實現,一個處理器(如果是多核處理器就是一個內核)同一時間只能被一個線程使用,同一時間只能執行一個線程的指令,當時間片用完,處理器就要交給別的線程使用,為了下一次輪到自己使用處理器是能夠接着執行現在的指令,使用一個計數器來記錄。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM