实现线程接口,run()方法和此类的构造函数哪个先执行?

解决方案 »

  1.   

    run()函数是在:主程序 调用了start()函数,然后系统创建新线程,最后才调用了run()函数。所以你觉得跟其构造函数比,哪个先执行?
      

  2.   

    应该是构造函数吧,run()方法是通过类的对象调用的,所以得先调用构造函数
      

  3.   

    楼上都已经解释了,楼主可以自己搞个log验证下
      

  4.   

    一楼解释权威,楼主可以在构造函数和run方法里打印一条语句,看看哪个先打印出来就知道先执行哪个啦!
      

  5.   

    run也是实例方法,如果对象都没有如何调用?
      

  6.   

    class TestThread implements Runnable{ public TestThread(){} public void run(){}}public class UseThread(){
     public static void main(String[] args){
      Thread test = new TestThread();// 这一行调用构造方法TestThread()
      test.start();//这一行调用start()方法,除了主线程main正在运行之外,线程test进入就绪状态,紧接着会执行run()中的代码,如果直接用test.run(),虽然代码也会执行,但是没有另起一个线程。
     }
    }
      

  7.   

    class TestThread implements Runnable{ public TestThread(){} public void run(){}}public class UseThread(){
     public static void main(String[] args){
      Thread test = new TestThread();// 这一行调用构造方法TestThread()
      new Thread(test).start();//这一行调用start()方法,除了主线程main正在运行之外,线程test进入就绪状态,紧接着会执行run()中的代码,如果直接用test.run(),虽然代码也会执行,但是没有另起一个线程。
     }
    }
    写错了,修改
      

  8.   

    class TestThread implements Runnable{ public TestThread(){} public void run(){}}public class UseThread(){
     public static void main(String[] args){
      Thread test = new TestThread();// 这一行调用构造方法TestThread()
      new Thread(test).start();//这一行调用start()方法,除了主线程main正在运行之外,线程test进入就绪状态,紧接着会执行run()中的代码,如果直接用test.run(),虽然代码也会执行,但是没有另起一个线程。
     }
    }
      

  9.   

    先构造函数,你创建对象的时候就实现了构造方法,你可以重写一下构造方法在里面打印一个语句然后呢执行run()你就回发现会先打印出构造方法里面的内容,然后才是run(),构造方法只执行一次。