Java-线程不';开始

Java-线程不';开始,java,multithreading,Java,Multithreading,当我尝试启动线程(u)时,它什么也不做! 这是我在课堂上学到的: private Updater uc; Thread t1 = new Thread(uc); -bunch of other code- t1.start(); Updater.java: public class Updater implements Runnable{ public void run(){ System.out.println("I work!"); } } 输出什么都不是。有人知道为什么吗?除非

当我尝试启动线程(u)时,它什么也不做! 这是我在课堂上学到的:

private Updater uc;
Thread t1 = new Thread(uc);
-bunch of other code-
t1.start();
Updater.java:

public class Updater implements Runnable{
public void run(){
  System.out.println("I work!");
  }
}

输出什么都不是。有人知道为什么吗?

除非我遗漏了什么-你永远不会初始化uc:

uc = new Updater();
当您将null作为Runnable传入时,线程只将null值传递给内部init方法,该方法从所有线程构造函数(包括不带Runnable参数的构造函数)调用


在目标Runnable为null的情况下,Thread run()只执行exit操作。多亏了Jon。

看起来您正在传递一个空Runnable。尝试:

private Updater uc = new Updater();
Thread t1 = new Thread(uc);

的确当您将
null
作为
Runnable
传入时,
Thread
只将
null
值传递给一个内部
init
方法,该方法从所有
Thread
构造函数调用,包括不带
Runnable
参数的构造函数。在目标
Runnable
null
的情况下,线程
run()
只执行退出操作。