Thread.start() と Thread.run() の違いを理解する
Java でマルチスレッドを使用する場合、プログラマーは 2 つの重要な点に遭遇します。メソッド: Thread.start() および Thread.run()。これらの名前は同様の機能を示唆しているかもしれませんが、明らかに異なる目的を果たします。
これらのメソッドの機能は何ですか?
Thread.start():
Thread.run():
Thread.run を呼び出すことができないのはなぜですか()?
Thread.run() が run() メソッドも実行する場合、なぜ単に代わりにこれを呼び出すことができないのでしょうか。 Thread.start()?その理由は、マルチスレッドが提供する分離と独立した実行にあります。
Thread.run() を呼び出すと、別のスレッドではなく、現在のスレッドでコードが実行されます。これは、 run() メソッド内のコードは引き続き現在のスレッド内のリソースと対話し、リソースに影響を与えることを意味します。これは、タスクの同時実行を可能にするマルチスレッドの本来の目的ではありません。
違いを示す例:
次の点を考慮してください。コード:
public class ThreadExample { public static void main(String[] args) { Thread t1 = new Thread(() -> System.out.println("Thread 1")); Thread t2 = new Thread(() -> System.out.println("Thread 2")); // Here, we call Thread.start() and Thread.run(): t1.start(); // Starts Thread 1 in a separate thread t2.run(); // Executes Thread 2 in the current thread System.out.println("Main Thread"); } }
出力:
Thread 1 Main Thread
t1 で Thread.start() を呼び出すと、新しいスレッドが作成され、そのスレッドで run() メソッドが実行されます。 、「スレッド 1」を印刷できるようになります。一方、t2 で Thread.run() を呼び出すと、新しいスレッドの作成をバイパスして、現在の (つまりメイン) スレッドで run() メソッドが実行されます。その結果、「スレッド 2」は別のスレッドで実行されないため、出力されません。
以上がJava での真のマルチスレッド化に `Thread.start()` が不可欠なのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。