ホームページ > Java > &#&チュートリアル > 実行可能 run() とスレッド start(): 主な違いは何ですか?

実行可能 run() とスレッド start(): 主な違いは何ですか?

Barbara Streisand
リリース: 2024-12-21 22:55:31
オリジナル
117 人が閲覧しました

Runnable run() vs. Thread start(): What's the Key Difference?

実行可能 run() とスレッド start()

質問:

同時実行Java プログラミングでは、Runnable インターフェイスはタスクのエントリ ポイントである run() メソッドを定義します。同様に、Thread クラスには、新しい実行スレッドを開始する start() メソッドがあります。これら 2 つのメソッドの主な違いは何ですか?

答え:

基本的な違いはスレッドの作成と実行にあります:

Runnable run (): スレッド作成なし

  • 呼び出しRunnable.run() は、新しいスレッドを直接作成しません。
  • 代わりに、現在の実行スレッド内で run() メソッドを実行します。
  • このアプローチは、タスクが軽量な場合に適しています。独自の専用スレッドは必要ありません。

Thread start(): Thread Creation

  • Thread.start() を呼び出すと、新しい実行スレッドが開始されます。
  • 新しいスレッド内で、関連付けられた Runnable オブジェクトの run() メソッドが実行されます。
  • Thread.start() を使用すると、タスクを実行する個別のスレッドに分割することで並列処理が可能になります。

例:

Runnable インターフェイスを実装する 2 つのクラス R1 と R2 について考えます。

class R1 implements Runnable {
    public void run() { ... }
}

class R2 implements Runnable {
    public void run() { ... }
}
ログイン後にコピー

以下ではコード スニペットでは、r1.run() と r2.run() が直接呼び出されます。つまり、新しいスレッドは実行されません。 created:

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

    r1.run();
    r2.run();
}
ログイン後にコピー

対照的に、次のコードは 2 つの新しいスレッド t1 と t2 を作成し、それらを開始します:

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 と r2 に関連付けられたタスク新しく作成されたスレッド内で同時に実行されます。

以上が実行可能 run() とスレッド start(): 主な違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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