2

コンストラクターを使用するのではなく、run() メソッドを使用してスレッドを作成することに違いはありますか? スレッドを開始でき、両方の方法で同じように動作することに気付きました。

new Thread MyThread().start

たとえば、コンストラクタとして:

public class MyThread extends Thread{
    public MyThread(){
        // Do something
    }
}

または run() メソッドとして

public class MyThread extends Thread{
    public void run(){
        // Do something
    }
}

コンストラクターと run() の間に違いはありますか? ありがとう!

4

4 に答える 4

1

主な違いは次のとおりです。

コンストラクターのコードは、コンストラクターが呼び出される とすぐ同期的に実行されます。

プログラムは停止し、そのコードが完了するのを待ってから、次のコード行に進みます。

run()メソッド内にコードを配置して使用するThread.start()と、コードは別のスレッドで実行されます (つまり、非同期で実行されます)。

run()メソッド内のコードが並行して実行されている間、プログラムは引き続き実行されます (すぐに次のコード行に移動します) 。

これは、コードのrun()実行に非常に長い時間がかかる場合に役立ちます。

これは、スレッドが作業を完了するのを待っている間、プログラムが他の処理を続行できるためです。

于 2013-07-26T00:08:51.667 に答える