3

我是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");

}
}
4

3 回答 3

5

您需要将 的实例传递ThreadExampleThread构造函数,以告诉新线程要运行什么:

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

(不幸的是,Thread该类在各种方面都设计得很差。如果它本身没有方法会更有帮助run(),但确实迫使您将 a 传递给Runnable构造函数。然后您会在编译时发现问题-时间。)

于 2013-02-11T09:09:03.380 回答
2

当 a启动run时,JVM 会为您调用该方法。Thread默认实现根本不做任何事情。您的变量T是 normal Thread,没有Runnable“目标”,因此run永远不会调用它的方法。您可以为ThreadExampleThread 的构造函数提供一个实例,也可以ThreadExample 扩展 Thread

new ThreadExample().start();
// or
new Thread(new ThreadExample()).start();
于 2013-02-11T09:09:55.297 回答
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();
于 2013-02-11T09:56:43.160 回答