2012-03-28 5 views
0

Когда я пытаюсь запустить Thread (u), он ничего не делает! это то, что у меня есть в моем классе:Java - нить не запускается

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!"); 
    } 
} 

Выходной нет ничего. У кого-нибудь есть идея, почему?

ответ

9

Если я что-то не хватает - вы никогда не инициализировать УНЦ

uc = new Updater(); 

Когда вы передаете нуль в качестве Runnable, то Thread просто передает нулевое значение до внутренней инициализации метода, который вызывается из все конструкторы Thread, включая те, которые не принимают аргумент Runnable.

В случае, если целевой Runnable равен null, Thread run() просто не делает ничего, кроме выхода. Благодаря Джону.

+0

Спасибо, забыли об этом :) – TheMorfeus

+2

Действительно. Когда вы передаете «null» в качестве «Runnable», тогда «Thread» просто передает значение «null» через внутренний метод 'init', который вызывается из всех конструкторов« Thread », включая те, которые принимают нет аргумента 'Runnable'. В случае, если целевой «Runnable» равен «null», Thread 'run()' просто не делает ничего, кроме выхода. – Jon

4

Похоже, вы проходите мимо нулевого Runnable. Попытайтесь: