本部落格 貓叔的部落格,轉載請申明出處
前言
本系列將由淺入深,學習Java併發多執行緒。
一圖讀懂執行緒與程式
- 1、一個程式可以包含一個或多個執行緒。(其實你經常聽到“多執行緒”,沒有聽過“多程式”嘛)
- 2、程式存在堆和方法區
- 3、執行緒存在程式計數器和棧
- 4、堆佔最大記憶體,其為建立時分配的,是多執行緒共享的,主要存放new建立的物件
- 5、方法區也是多執行緒共享的,主要存放類、常量、靜態變數
- 6、CPU的基本執行單位是執行緒(注意!不是程式)
- 7、由此,執行緒需要一個程式計數器記錄當前執行緒要執行的指令地址
- 8、當CPU的時間片用完,讓出後記錄當前執行地址,下次繼續執行(時間片輪詢)
- 9、只有執行Java程式碼時pc技數器記錄的才是下一條指令的地址,執行native方法,則記錄的是undefined地址
- 10、執行緒中的棧,只要儲存執行緒區域性變數、呼叫棧幀
棧幀:C語言中,每個棧幀對應著一個未執行完的函式。棧幀中儲存了該函式的返回地址和區域性變數。
公眾號:Java貓說
現架構設計(碼農)兼創業技術顧問,不羈平庸,熱愛開源,雜談程式人生與不定期乾貨。