我是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");
}
}
答案 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();