マルチスレッドの Thread.start() と Runnable.run()
マルチスレッドを詳しく調べると、次の 2 つの重要なメソッドに遭遇することがよくあります。 .start() と Runnable.run()。効果的なスレッド管理には、これらの違いを理解することが不可欠です。
Runnable.run()
run() メソッドは、Runnable インターフェイスの実装の重要な部分です。別のスレッドとして実行する必要があるコードを定義します。 run() を呼び出すと、基本的に、呼び出しスレッド内で実装されたコードの実行が開始されます。
Thread.start()
run() とは異なり、Thread の呼び出しは.start() は、関連付けられたスレッドのコードを直接実行しません。代わりに、新しいスレッドを起動し、run() メソッドの実行をその新しいスレッドに委任します。新しいスレッドは呼び出し元のスレッドとは独立して動作するため、真のマルチスレッドが可能になります。
主な違い
根本的な違いは、複数のスレッドが作成されるかどうかにあります。 run() を呼び出すと単に現在のスレッド内でコードが実行されますが、start() は新しいスレッドを開始してコードを実行します。
例
2 つの Runnable クラスを考えてみましょう。 R1 と R2:
class R1 implements Runnable { public void run() { ... } } class R2 implements Runnable { public void run() { ... } }
ケース 1: を使用するrun()
R1 r1 = new R1(); R2 r2 = new R2(); r1.run(); r2.run();
このシナリオでは、r1 と r2 の両方が同じスレッド内で run() メソッドを順番に実行します。追加のスレッドは作成されません。
ケース 2: start() を使用する
R1 r1 = new R1(); R2 r2 = new R2(); Thread t1 = new Thread(r1); Thread t2 = new Thread(r2); t1.start(); t2.start();
t1 と t2 で start() が呼び出されると、新しいスレッドが作成されます。 r1 と r2 の run() メソッドをそれぞれ実行します。これにより、各スレッドが独立して実行される真のマルチスレッドが実現します。
以上がThread.start() と Runnable.run(): マルチスレッドの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。