違いは次のとおりです:
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() メソッドを呼び出します。スレッド名はデフォルトです
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メソッドの違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。