Java - 线程无法启动

The*_*eus 0 java multithreading

当我尝试启动线程(你)它什么也没做!这就是我班上的内容:

private Updater uc;
Thread t1 = new Thread(uc);
-bunch of other code-
t1.start();
Run Code Online (Sandbox Code Playgroud)

Updater.java:

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

输出什么都没有.有谁知道为什么?

MBy*_*ByD 9

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

uc = new Updater();
Run Code Online (Sandbox Code Playgroud)

当您将Run in作为Runnable传递时,Thread只是将null值传递给内部init方法,该方法从所有Thread构造函数调用,包括不带Runnable参数的构造函数.

如果目标Runnable为null,则Thread run()根本不执行除exit之外的任何操作.感谢Jon.

  • 确实.当你将`null`作为`Runnable`传递时,`Thread`只是将`null`值传递给一个内部`init`方法,该方法从所有`Thread`构造函数调用,包括那些构造函数.没有'Runnable`论点.如果目标`Runnable`为`null`,则Thread`()`除了exit之外什么都不做. (2认同)