java—jvm程序計數器

一、概念
多線程的Java應用程序:爲了讓每個線程正常工作就提出了程序計數器(Programe Counter Register),每個線程都有自己的程序計數器這樣當線程執行切換的時候就可以在上次執行的基礎上繼續執行,僅僅從一條線程線性執行的角度而言,代碼是一條一條的往下執行的,這個時候就是程序計數器;JVM就是通過讀取程序計數器的值來決定下一條需要執行的字節碼指令,進而進行選擇語句、循環、異常處理等;

二、舉例

1.生活案例
比如老王正在看片,他看到三十五分鐘的時候,突然他的QQ好友蒼老師給他開視頻,這時候肯定打斷他看片了,假設蒼老師和他視頻完了,他肯定要接着他那35分鐘的進度去繼續看,這時候他怎麼知道我看到35分鐘了?這時候程序計數器就起了作用,他負責管理進度。

2.代碼層面
將上面的例子轉換成代碼,是這樣的:
A線程正在執行HelloWorld.class的第三十五行。這時候CPU時間片被B線程搶走了,當A線程重新被分配到時間片時,他怎麼知道我的class運行到哪了?這時候他可以看程序計數器在哪個位置。

三、總結
程序計數器作用不多說了,我個人感覺他是爲了多線程而生的,單線程情況下完全不需要他。從案例中不難發現,程序計數器是每個線程獨有的,並非線程共享的!

若有興趣,歡迎來加入羣,【Java初學者學習交流羣】:794351617



 

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