Thread.start() と Thread.run() のニュアンスを理解する
Thread.start() と Thread の違い。 Java の run() は、マルチスレッド化において重要な役割を果たします。どちらのメソッドにも run() メソッドの実行が含まれますが、根本的に異なる方法で実行されます。
Thread.run(): 直接実行
run() を直接呼び出す現在のスレッドで run() メソッドを実行します。これは、タスク用に個別のスレッドが作成されないことを意味します。代わりに、タスクは呼び出しスレッドの実行の一部として実行されます。
例:
public class MyThread extends Thread { @Override public void run() { System.out.println("Running directly..."); } } public class Main { public static void main(String[] args) { MyThread thread = new MyThread(); thread.run(); } }
出力:
Running directly...
この例ではたとえば、独立したスレッドがないため、run() を直接呼び出すと、メインスレッドから「直接実行中...」が出力されます。 created.
Thread.start(): 新しいスレッドの作成
対照的に、start() を呼び出すと新しいスレッドが作成され、その新しいスレッド内で run() メソッドが実行されます。糸。これにより、複数のタスクを同時に実行できます。
例:
public class MyThread extends Thread { @Override public void run() { System.out.println("Running in new thread..."); } } public class Main { public static void main(String[] args) { MyThread thread = new MyThread(); thread.start(); } }
出力:
Running in new thread...
start() の呼び出しは行われないことに注意してください。すぐに run() メソッドを実行します。代わりに、新しいスレッドが作成され、Java 仮想マシンがそれをいつスケジュールして実行するかを決定します。
実際的な違い
Thread.start() と Thread.start() の違いThread.run() は、完了するまでにかなりの時間がかかるタスクを考慮すると明らかになります。 run() を使用してタスクを直接実行すると、メインスレッドはタスクが終了するまでブロックされ、その間に他のタスクが実行されなくなります。これにより、パフォーマンスと応答性が低下する可能性があります。
start() を使用すると、タスクが別のスレッドで実行され、メイン スレッドが他のタスクを同時に実行し続けることができます。これにより、全体的なパフォーマンスが向上し、応答性が維持されます。
以上がJava の `Thread.start()` と `Thread.run()` の主な違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。