我运行此代码并得到了这个结果:
//back in main
//directly from the runnable
//top of the stack
我不应该top of the stack
作为我的第一个结果吗?
public class MyRunnable implements Runnable {
public void run() {
System.out.println("directly from the runnable");
go();
}
public void go() {
doMore();
}
public void doMore() {
System.out.println("top of the stack");
}
}
public class ThreadTester{
public static void main(String[] args) {
Runnable threadJob = new MyRunnable();
Thread myThread = new Thread(threadJob);
myThread.start();
System.out.println("back in main");
}
}
答案 0 :(得分:4)
线程没有特定的顺序,它可以是任何一种方式。 JVM是决定它的那个,它每次都可以给出不同的结果。
答案 1 :(得分:3)
你的runnable()或你的main()可能会先开始,但是这个
public void run() {
System.out.println("directly from the runnable");
go();
}
意味着"直接来自runnable"将始终在#34;堆栈顶部"之前打印。如果你想要扭转,
public void run() {
go();
System.out.println("directly from the runnable");
}