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

Javaの「Thread.start()」と「Runnable.run()」の違いは何ですか?

Mary-Kate Olsen
リリース: 2025-01-01 11:17:11
オリジナル
896 人が閲覧しました

What's the Difference Between `Thread.start()` and `Runnable.run()` in Java?

Thread.start() と Runnable.run() の違いを理解する

Java 同時実行では、Runnable は単一のメソッド run() には、別のスレッド内で同時に実行する必要があるコードが含まれています。 Thread クラスは、スレッドの作成と管理の詳細をカプセル化します。

シナリオ 1: Runnable の直接実行

最初の例:

R1 r1 = new R1();
R2 r2 = new R2();
r1.run();
r2.run();
ログイン後にコピー

R1 と R2 のインスタンスを作成し、それらの run() メソッドを直接呼び出します。これにより、新しいスレッドを作成せずに、現在のスレッド内でコードが実行されます。つまり、R1 と R2 は両方ともメイン スレッドで順次実行されます。

シナリオ 2: Runnable のスレッドベースの実行

2 番目の例:

R1 r1 = new R1();
R2 r2 = new R2();
Thread t1 = new Thread(r1);
Thread t2 = new Thread(r2);
t1.start();
t2.start();
ログイン後にコピー

再び R1 と R2 のインスタンスを作成しますが、今回はそれらを次のコンストラクターに渡します。スレッド。2 つの別個のスレッド オブジェクトを作成します。 t1.start() と t2.start() を呼び出すと、2 つの新しいスレッドが生成され、それぞれ R1 と R2 の run() メソッドを実行します。

主な違い

2 つの例の決定的な違いは、スレッドの作成を中心に展開されます。最初のシナリオでは、新しいスレッドは作成されず、R1 と R2 は既存のメイン スレッド内で単純に実行されます。 2 番目のシナリオでは、2 つの別個のスレッドが作成され、R1 と R2 の同時実行が可能になります。

要約すると、Runnable.run() は同時に実行されるコードを定義し、Thread.start() は実行を開始します。そのコードを実行するための新しいスレッド。どのアプローチを選択するかは、コードを新しいスレッドで実行するかメインスレッドで実行するかによって異なります。

以上がJavaの「Thread.start()」と「Runnable.run()」の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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