线程:不调用run方法

时间:2013-02-11 09:07:12

标签: java multithreading

我是java的新手。有人可以帮助我为什么不调用Run方法。 提前谢谢。

package com.blt;

public class ThreadExample implements Runnable {
    public static void main(String args[])
    {       

        System.out.println("A");
        Thread T=new Thread();
        System.out.println("B");
        T.setName("Hello");
        System.out.println("C");
        T.start();
        System.out.println("D");
    }

public void run()
{
    System.out.println("Inside run");

}
}

3 个答案:

答案 0 :(得分:4)

您需要将ThreadExample的实例传递给Thread构造函数,以告诉新线程要运行的内容:

Thread t = new Thread(new ThreadExample());
t.start();

(遗憾的是,Thread类的设计设计很差。如果 本身没有run()方法,那会更有帮助。 确实强制您将Runnable传递给构造函数。然后您在编译时发现了问题。)

答案 1 :(得分:2)

启动run时,JVM会为您调用Thread方法。默认实现什么都不做。您的变量T是正常Thread,没有Runnable'目标',因此永远不会调用其run方法。您可以向Thread的构造函数提供ThreadExample的实例,也可以ThreadExample 扩展 Thread

new ThreadExample().start();
// or
new Thread(new ThreadExample()).start();

答案 2 :(得分:0)

您也可以这样做。不要在主类中实现Runnable,而是在main类中创建一个内部类来执行此操作:

class TestRunnable implements Runnable{
    public void run(){
        System.out.println("Thread started");
   }
}

main方法中的Main类实例化它:

TestRunnable test = new TestRunnable(); 
Thread thread = new Thread(test);
thread.start();