ホームページ >Java >&#&チュートリアル >Java スレッドの Run() と start(): マルチスレッド動作の違いは何ですか?

Java スレッドの Run() と start(): マルチスレッド動作の違いは何ですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-21 18:36:12534ブラウズ

Run() vs. start() in Java Threads: What's the Difference in Multithreading Behavior?

スレッド処理における Run() と start() の比較: 包括的な説明

マルチスレッド プログラミングにおける Thread.run の違いを効果的に理解する() および Runnable.run() は

質問:

次のコード スニペットを考えてみましょう:

public static void main() {
    R1 r1 = new R1();
    R2 r2 = new R2();

    r1.run();
    r2.run();
}
public static void main() {
    R1 r1 = new R1();
    R2 r2 = new R2();
    Thread t1 = new Thread(r1);
    Thread t2 = new Thread(r2);

    t1.start();
    t2.start();
}

答え:

最初の例: いいえマルチスレッド

最初のスニペットでは、r1.run() と r2.run() は新しいスレッドを作成せずに直接実行されます。その結果、R1 と R2 の両方がメイン スレッド内で順次実行されます。

2 番目の例: マルチスレッド

2 番目のスニペットでは、Thread オブジェクト (t1 および t2) が作成されます。 R1 インスタンスと R2 インスタンスをそれぞれカプセル化します。 t1.start() と t2.start() が呼び出されると、新しいスレッドが開始され、それぞれが対応する Runnable 実装の run() メソッドをメイン スレッドと並行して実行します。

Key相違点:

  • スレッドの作成: start() は新しいスレッドを作成し、run() は呼び出し側スレッド内で Runnable を実行します。
  • 実行コンテキスト: start() は新しく作成された独立したスレッド内で Runnable を実行します。真の並列実行。 run() は、呼び出しスレッド内で Runnable を実行し、同時実行を制限します。

以上がJava スレッドの Run() と start(): マルチスレッド動作の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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