ホームページ  >  記事  >  Java  >  Javaスレッドのstartメソッドとrunメソッドの違いは何ですか

Javaスレッドのstartメソッドとrunメソッドの違いは何ですか

王林
王林転載
2021-05-01 12:04:043273ブラウズ

Javaスレッドのstartメソッドとrunメソッドの違いは何ですか

違いは次のとおりです:

Java のスレッドは Java.lang.Thread を通じて実装されることがわかっているので、Thread オブジェクトをインスタンス化できます。スレッドを作成し、start() を呼び出してスレッドを開始するために使用されます。ただし、Thread の特定のメソッド run() でもスレッドを開始できます。では、これら 2 つのメソッドの違いは何でしょうか?

スレッドのステータス

在Java当中,线程通常有五种状态:创建、运行、阻塞、等待、终止
NEW------------------->新建状态,没有调用start()之前的状态
RUNNABLE---------->运行状态,(running执行中,ready就绪(等待cpu时间片))
BLOCKED------------>阻塞状态,
WAITING-------------->等待状态,没有明确的等待结束时间,调用wait()
TIMED_WAITING—>超时等待状态,有明确的等待时间,如:sleep(xxx)
TERMINATED-------->终止状态

マルチスレッドの原則:

通常、スレッドを開始するには thread new を使用し、次に start メソッドを呼び出して開始します。スレッドは実行状態の準備が整い、CPU スケジューリングを待機してから、スレッド内で run() メソッドを実行します。start メソッドを使用すると、真のマルチスレッド操作が実現します。これは、現時点では、待機せずに次のコードの実行を続けることができるためです。メソッドを実行して完了します。これはマルチスレッドと呼ばれます。

スレッドを直接使用して run メソッドを実行するとどうなりますか?

run メソッドはスレッド内の通常のメソッドであるため、run() メソッドが直接呼び出された場合、プログラムにはメイン スレッドが 1 つしかないため、この時点ではメイン スレッドで実行されます。 2 つのスレッドがあり、すべて run() メソッドを直接呼び出すため、それらの実行順序は順番に実行する必要があり、マルチスレッドの目的は達成されません。

無料の学習ビデオ共有: Java ビデオ チュートリアル

コード比較

public class ThreadDemo5 {
    public static final boolean flag=false;
    public static void main(String[] args) {
        Thread t1=new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println(Thread.currentThread().getName());
            }
        });
        t1.start();
    }
}

start() メソッドを呼び出します。スレッド名はデフォルトです

Javaスレッドのstartメソッドとrunメソッドの違いは何ですか

public class ThreadDemo5 {
    public static final boolean flag=false;
    public static void main(String[] args) {
        Thread t1=new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println(Thread.currentThread().getName());
            }
        });
        t1.run();
    }
}

run() を呼び出し、スレッド名は main

Javaスレッドのstartメソッドとrunメソッドの違いは何ですか

関連する推奨事項:

Java 入門チュートリアル

以上がJavaスレッドのstartメソッドとrunメソッドの違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。