要理解線程調度的原理,以及線程執行過程,必須理解線程棧模型。
線程棧是指某時刻時內存中線程調度的棧信息,當前調用的方法總是位于棧頂。線程棧的內容是隨著程序的運行動態變化的,因此研究線程棧必須選擇一個運行的時刻(實際上指代碼運行到什么地方)。
下面,我們來根據這段代碼和圖片來來說明線程棧的過程
package cn.happy.bdqn;public class TestRunnable { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub System.out.PRintln("Hello World!"); new TestRunnable(); } public void meThod(){ DoSomething ds1=new DoSomething("阿三"); Thread t1=new Thread(ds1); t1.start(); }}
可以看出,當代碼執行到兩個時刻(1和2)的時候,虛擬機調用棧的過程。
當程序執行到t1.start()的時候,可以看出,程序多了一個分支,(增加了一個調用棧B),這樣棧A和棧B并行執行。
新聞熱點
疑難解答