📅  最后修改于: 2020-09-27 01:10:57             🧑  作者: Mango
每个线程都在单独的调用堆栈中启动。从主线程调用run()方法,run()方法转到当前调用堆栈,而不是新调用堆栈的开头。
class TestCallRun1 extends Thread{
public void run(){
System.out.println("running...");
}
public static void main(String args[]){
TestCallRun1 t1=new TestCallRun1();
t1.run();//fine, but does not start a separate call stack
}
}
class TestCallRun2 extends Thread{
public void run(){
for(int i=1;i<5;i++){
try{Thread.sleep(500);}catch(InterruptedException e){System.out.println(e);}
System.out.println(i);
}
}
public static void main(String args[]){
TestCallRun2 t1=new TestCallRun2();
TestCallRun2 t2=new TestCallRun2();
t1.run();
t2.run();
}
}
Output:1
2
3
4
5
1
2
3
4
5
如您在上面的程序中看到的,没有上下文切换,因为在这里t1和t2将被视为普通对象而不是线程对象。