Java线程:线程栈模型
要理解线程调度的原理,以及线程执行过程,必须理解线程栈模型。
线程栈是指某时刻时内存中线程调度的栈信息,当前调用的方法总是位于栈顶。线程栈的内容是随着程序的运行动态变化的,因此研究线程栈必须选择一个运行的时刻(实际上指代码运行到什么地方)。
下面,我们来根据这段代码和图片来来说明线程栈的过程
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并行执行。