2012-03-28 13 views
0

スレッド(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を初期化することはありません:あなたはRunnableをようにnullを渡すと、そのスレッドはちょうどから呼び出される内部のinitメソッド、に至るまで、null値を渡し

uc = new Updater(); 

をRunnable引数を取らないThreadコンストラクタを含むすべてのThreadコンストラクタ

ターゲットRunnableがnullの場合、スレッドrun()はexit以外の何もしません。ジョンのおかげです。

+0

ありがとう、それについて忘れました。 – TheMorfeus

+2

確かに。 'Runnable'として' null'を渡すと、 'Thread'は' null'値を内部の 'init'メソッドに渡します。これは' Thread'コンストラクタのすべてから呼び出されます。 'Runnable'引数はありません。ターゲット 'Runnable'が' null'の場合、スレッド 'run()'は単にexit以外の何もしません。 – Jon

4

nullのRunnableを渡しているようです。試してください:

private Updater uc = new Updater(); 
Thread t1 = new Thread(uc); 
関連する問題