Java の `Thread.start()` と `Thread.run()` の主な違いは何ですか?

DDD
リリース: 2024-11-15 11:41:02
オリジナル
902 人が閲覧しました

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

Thread.start() と Thread.run() のニュアンスを理解する

Thread.start() と Thread の違い。 Java の run() は、マルチスレッド化において重要な役割を果たします。どちらのメソッドにも run() メソッドの実行が含まれますが、根本的に異なる方法で実行されます。

Thread.run(): 直接実行

run() を直接呼び出す現在のスレッドで run() メソッドを実行します。これは、タスク用に個別のスレッドが作成されないことを意味します。代わりに、タスクは呼び出しスレッドの実行の一部として実行されます。

例:

public class MyThread extends Thread {
    @Override
    public void run() {
        System.out.println("Running directly...");
    }
}

public class Main {
    public static void main(String[] args) {
        MyThread thread = new MyThread();
        thread.run();
    }
}
ログイン後にコピー

出力:

Running directly...
ログイン後にコピー

この例ではたとえば、独立したスレッドがないため、run() を直接呼び出すと、メインスレッドから「直接実行中...」が出力されます。 created.

Thread.start(): 新しいスレッドの作成

対照的に、start() を呼び出すと新しいスレッドが作成され、その新しいスレッド内で run() メソッドが実行されます。糸。これにより、複数のタスクを同時に実行できます。

例:

public class MyThread extends Thread {
    @Override
    public void run() {
        System.out.println("Running in new thread...");
    }
}

public class Main {
    public static void main(String[] args) {
        MyThread thread = new MyThread();
        thread.start();
    }
}
ログイン後にコピー

出力:

Running in new thread...
ログイン後にコピー

start() の呼び出しは行われないことに注意してください。すぐに run() メソッドを実行します。代わりに、新しいスレッドが作成され、Java 仮想マシンがそれをいつスケジュールして実行するかを決定します。

実際的な違い

Thread.start() と Thread.start() の違いThread.run() は、完了するまでにかなりの時間がかかるタスクを考慮すると明らかになります。 run() を使用してタスクを直接実行すると、メインスレッドはタスクが終了するまでブロックされ、その間に他のタスクが実行されなくなります。これにより、パフォーマンスと応答性が低下する可能性があります。

start() を使用すると、タスクが別のスレッドで実行され、メイン スレッドが他のタスクを同時に実行し続けることができます。これにより、全体的なパフォーマンスが向上し、応答性が維持されます。

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

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