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

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

Mary-Kate Olsen
リリース: 2024-11-13 11:17:02
オリジナル
640 人が閲覧しました

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

Java での Thread.start() と Thread.run() の呼び出し

はじめに:
Java のマルチスレッドは、タスクを同時に実行するためのメカニズムを提供します。マルチスレッドの重要なコンポーネントの 1 つは Thread クラスです。スレッドを実行するには、Thread.start() または Thread.run() を呼び出すことができます。この記事の目的は、これら 2 つのメソッドの違いを明確にし、どのような場合に違いが生じるかを示すことです。

違いを理解する:
スレッド オブジェクトで Thread.start() を呼び出すと、新しい実行スレッド。これにより、オペレーティング システムのスレッド スケジューラに新しいスレッドを作成し、その実行をスケジュールするよう指示されます。スレッドが開始されると、スレッドは独立し、メイン スレッドと同時に実行されます。

一方、スレッド オブジェクトで Thread.run() を呼び出すと、現在のスレッドでスレッドの 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート