3

私は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");

}
}
4

3 に答える 3

5

のインスタンスをコンストラクターに渡して、新しいスレッドに何を実行するかを伝える必要がありThreadExampleますThread

Thread t = new Thread(new ThreadExample());
t.start();

(残念なことに、Threadクラスの設計がさまざまな点で不十分でした。メソッド自体がなくても、コンストラクターに a を強制的に渡さなければならない場合は、より役に立ちます。そうすれば、コンパイル時に問題が見つかります。 -時間。)run()Runnable

于 2013-02-11T09:09:03.380 に答える
2

このメソッドは、 の開始run時に JVM によって呼び出されます。Threadデフォルトの実装は単に何もしません。変数は「ターゲット」のないT通常の であるため、そのメソッドは呼び出されません。Thread のコンストラクターに のインスタンスを提供するか、extendを持つことができます。ThreadRunnablerunThreadExampleThreadExample Thread

new ThreadExample().start();
// or
new Thread(new ThreadExample()).start();
于 2013-02-11T09:09:55.297 に答える
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();
于 2013-02-11T09:56:43.160 に答える