ホームページ >Java >&#&チュートリアル >JavaのThread.start()とThread.run()の違いは何ですか?

JavaのThread.start()とThread.run()の違いは何ですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-16 19:00:03484ブラウズ

What is the difference between Thread.start() and Thread.run() in Java?

Thread.start() と Thread.run() の違いを理解する

Java でスレッドを操作する場合、以下を理解することが重要ですstart() メソッドと run() メソッドの役割。これらは、スレッドのライフサイクルを管理する際に異なる機能を果たします。

Thread.start() と Thread.run()

Thread.start() メソッドは初期化します。 run() メソッドで定義されたコードを含む新しいスレッド。呼び出し時に、別の実行スレッドが作成され、start() を呼び出したスレッドと同時に run() メソッドが実行されます。

対照的に、Thread.run() は run() 内のコードを直接実行します。現在のスレッド内のメソッド。新しいスレッドは作成されません。つまり、コードは呼び出し元のスレッドと順番に実行されます。

違いを示す例

2 つのメソッドの違いを説明するには、次のことを考慮してください例:

class MyThread extends Thread {
    @Override
    public void run() {
        for (int i = 0; i < 10; i++) {
            System.out.println("Thread " + this.getName() + ": " + i);
        }
    }
}

public class Main {
    public static void main(String[] args) {
        MyThread thread1 = new MyThread();
        
        // Calling Thread.start()
        thread1.start();
        
        // Calling Thread.run() directly
        thread1.run();
    }
}

出力:

Thread Thread-0: 0
Thread Thread-0: 1
Thread Thread-1: 0
Thread Thread-1: 1
Thread Thread-1: 2
Thread Thread-1: 3
Thread Thread-1: 4
Thread Thread-1: 5
Thread Thread-1: 6
Thread Thread-1: 7
Thread Thread-1: 8
Thread Thread-1: 9

この例では、start() を呼び出すと、run( ) メソッドをメインスレッドと同時に実行します。その結果、出力は両方のスレッドからのメッセージをインターリーブします。

ただし、run() を直接呼び出しても、新しいスレッドは作成されません。代わりに、メインスレッド (Thread-1) 内で run() メソッドを実行します。その結果、run() メソッドからのメッセージは、start() 呼び出しの後に順次出力されます。

以上がJavaのThread.start()とThread.run()の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。