javaでのrun()とstart()の違い

start()メソッドの機能は、新しいスレッドを開始することです。Run()は、通常のメンバーメソッドと同じであり、繰り返し呼び出すことができます。

この質問はよく聞かれますが、それでもインタビュアーがJavaスレッドモデルを理解していることを区別できます。start()メソッドは新しく作成されたスレッドを開始するために使用され、run()メソッドはstart()の内部で呼び出されます。これは、run()メソッドを直接呼び出すことと同じではありません。run()メソッドを呼び出すと、元のスレッドでのみ呼び出されます。新しいスレッドが開始されていない場合、start()メソッドは新しいスレッドを開始します。

開始方法:

この方法でスレッドを開始すると、スレッドも作成され、マルチスレッドが実現します。run()メソッドのコードの実行が終了するのを待たずに、次のコードの実行を続行できます。この時点で、start()のスレッドは準備完了状態にあり、CPUタイムスライスが取得されるとrun()メソッドが実行されます。run()メソッドには、実行するスレッドの内容が含まれています。run()メソッドが終了すると、スレッドは終了します。

実行メソッド:

runメソッドを介してスレッドを開始すると、実際にはクラス内のメソッドが呼び出されます。これは通常のメソッドと呼ばれます。スレッドは作成されません。プログラムにはまだメインスレッドが1つしかありません。次のコードの実行を続行する前に、run()メソッドのコードが実行されるまで待機する必要があります。これにより、スレッドを作成する目的が達成されません。
runメソッドは、ビジネスロジックが実装される場所であり、基本的には任意のクラスのメンバーメソッドと同じです。繰り返し実行することも、スレッドによって繰り返し呼び出すことも、個別に呼び出すこともできます。

要約すると、
1.start()は新しいスレッドを開始でき、run()はできません
2.start()を繰り返し呼び出すことはできません、run()はできます
3.start ()のコードを実行すると、実行を終了せずに次のコードを実行し続けることができますコード、つまりスレッドの切り替え。runメソッドを直接呼び出すには、コードが実行されるのを待ってから、以下のコードを実行し続ける必要があります。
4.start()はマルチスレッドを実装しますが、run()はマルチスレッドを実装しません。

おすすめ

転載: blog.csdn.net/qq_41489540/article/details/109109675