Thread.start() と Runnable.run() の違いを理解する
Java 同時実行では、Runnable は単一のメソッド run() には、別のスレッド内で同時に実行する必要があるコードが含まれています。 Thread クラスは、スレッドの作成と管理の詳細をカプセル化します。
シナリオ 1: Runnable の直接実行
最初の例:
R1 r1 = new R1(); R2 r2 = new R2(); r1.run(); r2.run();
R1 と R2 のインスタンスを作成し、それらの run() メソッドを直接呼び出します。これにより、新しいスレッドを作成せずに、現在のスレッド内でコードが実行されます。つまり、R1 と R2 は両方ともメイン スレッドで順次実行されます。
シナリオ 2: Runnable のスレッドベースの実行
2 番目の例:
R1 r1 = new R1(); R2 r2 = new R2(); Thread t1 = new Thread(r1); Thread t2 = new Thread(r2); t1.start(); t2.start();
再び R1 と R2 のインスタンスを作成しますが、今回はそれらを次のコンストラクターに渡します。スレッド。2 つの別個のスレッド オブジェクトを作成します。 t1.start() と t2.start() を呼び出すと、2 つの新しいスレッドが生成され、それぞれ R1 と R2 の run() メソッドを実行します。
主な違い
2 つの例の決定的な違いは、スレッドの作成を中心に展開されます。最初のシナリオでは、新しいスレッドは作成されず、R1 と R2 は既存のメイン スレッド内で単純に実行されます。 2 番目のシナリオでは、2 つの別個のスレッドが作成され、R1 と R2 の同時実行が可能になります。
要約すると、Runnable.run() は同時に実行されるコードを定義し、Thread.start() は実行を開始します。そのコードを実行するための新しいスレッド。どのアプローチを選択するかは、コードを新しいスレッドで実行するかメインスレッドで実行するかによって異なります。
以上がJavaの「Thread.start()」と「Runnable.run()」の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。