Java での Thread.start() と Thread.run() の呼び出し
はじめに:
Java のマルチスレッドは、タスクを同時に実行するためのメカニズムを提供します。マルチスレッドの重要なコンポーネントの 1 つは Thread クラスです。スレッドを実行するには、Thread.start() または Thread.run() を呼び出すことができます。この記事の目的は、これら 2 つのメソッドの違いを明確にし、どのような場合に違いが生じるかを示すことです。
違いを理解する:
スレッド オブジェクトで Thread.start() を呼び出すと、新しい実行スレッド。これにより、オペレーティング システムのスレッド スケジューラに新しいスレッドを作成し、その実行をスケジュールするよう指示されます。スレッドが開始されると、スレッドは独立し、メイン スレッドと同時に実行されます。
一方、スレッド オブジェクトで Thread.run() を呼び出すと、現在のスレッドでスレッドの run() メソッドが実行されるだけです。 。この場合、スレッドは独立して実行されるようにスケジュールされておらず、run() メソッドが呼び出された後に run() メソッドが順番に実行されます。
Run を呼び出す代わりにスレッドを開始する理由
スレッドの開始には、run() を直接呼び出す場合よりもいくつかの利点があります:
違いを示す例:
違いを説明するために、次の例を考えてみましょう:
public class ThreadExample extends Thread { @Override public void run() { System.out.println("Thread is running..."); } public static void main(String[] args) { ThreadExample thread = new ThreadExample(); // Call the run() method directly - executed in the main thread thread.run(); // Start the thread - runs concurrently with the main thread thread.start(); } }
このコードが run() メソッド呼び出しで実行されると、出力は次のようになります:
Thread is running...
この場合、run() メソッドはメインスレッドで実行され、同時実行性はありません。ただし、start() メソッド呼び出しでコードが実行されると、出力は次のようになります:
Thread is running...
... 続いてメイン スレッドの出力が続き、スレッドが並行して実行されていることを示します。
以上がJava での Thread.start() 呼び出しと Thread.run() 呼び出しの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。