一个线程进入run方法体开始运行了,还可以被阻塞的?(没有任何休眠与等待)
public class TESTHTREAD implements Runnable {
public static void main(String[] args) {
TESTHTREAD testhtread = new TESTHTREAD();
Thread t1 = new Thread(testhtread);
t1.start();
start1();
}
public void run() {
System.out.println("Doing Run");
run1();
}
private void run1() {
System.out.println("Doing Run1");
}
private static void start1() {
System.out.println("Doing Start1");
}
}
程序的输出是不固定的,可以理解,但是其中有一个输出不明白,输出如下:
Doing Run
Doing Start1
Doing Run1
这个输出表示t1线程已经进入run方法体开始运行了,那么应该把run方法体运行完毕再由主线程执行start1()方法啊 ?
t1线程对应的栈区已经包含了run1()方法的栈帧了吧,t1线程的栈帧入出栈的时候,主线程怎么就抢到了CPU的呢 ?
能从JVM内存分配机制方面说说吗 ? (剩余分数不多,谢谢大家!)