猿教程 Logo

是否可以直接调用run()方法

阿里云服务器,每月低至7.8元,项目演示即建站必备,比腾讯云更便宜,并且不需学生认证,从此链接购买有效:去购买
  • 每个线程在单独的调用堆栈中启动。 

  • 从主线程调用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
 }
}
Output:running...


相关实例:

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将被视为普通对象而不是线程对象。

阿里云服务器,每月低至7.8元,项目演示即建站必备,比腾讯云更便宜,并且不需学生认证,从此链接购买有效: 去购买


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/Java/what-if-we-call-run()-method-directly.html