一、线程栈模型
线程栈模型是理解线程调度原理以及线程执行过程的基础。线程栈是指某时刻时内存中线程调度的栈信息,当前调用的方法总是位于栈顶,线程栈的内容是随着线程的运行状态变化而变化的,研究线程栈必须选择一个运行的时刻(指代码运行到什么地方)
上图中的栈A是主线程main的运行栈信息,当执行new JavaThreadDemo().threadMethod();方法时,threadMethod方法位于主线程栈中的栈顶,在threadMethod方法中运行的start()方法新建立了一个线程,此时,新建立的线程也将拥有自己的线程栈B,可以看到在不同运行时刻栈的信息在发生变化,栈A的变化可以从上图中看出来。此时栈A和栈B并行运行,main线程和新建立的线程并行运行。由此可以看出方法调用和线程启动的区别。方法调用只是在原来的线程栈中调用方法的代码,而线程启动会新建立一个独属于自己的线程栈来运行自己的这个线程。
二、线程的生命周期
线程的生命周期包括五种状态: