Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaでrun()メソッドを直接呼び出すとどうなりますか?


Threadオブジェクトのrun()メソッドの直接呼び出し 別のスレッドを開始しません 現在のスレッド内で実行できます。 Runnable.runを実行するには 別のスレッド内から、次のいずれかを実行します

  • Runnableを使用してスレッドを構築します オブジェクトを作成してstart()を呼び出します スレッドのメソッド。
  • Threadオブジェクトのサブクラスを定義し、その run()の定義をオーバーライドします。 方法。次に、このサブクラスのインスタンスを作成し、 start()を呼び出します。 そのインスタンスのメソッドを直接。

public class ThreadRunMethodTest {
   public static void main(String args[]) {
      MyThread runnable = new MyThread();
      runnable.run(); // Call to run() method does not start a separate thread
      System.out.println("Main Thread");
   }
}
class MyThread extends Thread {
   public void run() {
      try {
         Thread.sleep(1000);
      } catch (InterruptedException e) {
         System.out.println("Child Thread interrupted.");
      }
      System.out.println("Child Thread");
   }
}

上記の例では、メインスレッド ThreadRunMethodTest 、子スレッド MyThreadを呼び出します 、run()メソッドを使用します。これにより、残りのメインスレッドが実行される前に子スレッドが完了するまで実行されるため、「子スレッドメインスレッド」の前に「」が印刷されます "。

出力
Child Thread
Main Thread

  1. JavaでのSwingWorkerクラスの重要性は何ですか?

    SwingWorker クラスを使用すると、非同期を実行できます タスク ワーカースレッド(長時間実行タスクなど)で、イベントディスパッチスレッド(EDT )からSwingコンポーネントを更新します。 ) タスクの結果に基づきます。 Java1.6バージョンで導入されました。 SwingWorkerクラス java.swing.SwingWorker クラスはタスクワーカーであり、時間のかかるタスクをバックグラウンドで実行します。 SwingWorker インスタンスは3つのスレッドと相互作用します。現在 スレッド 、ワーカースレッド 、およびイベントディスパッチスレッド(E

  2. JavaでのSwingUtilitiesクラスの重要性は何ですか?

    Javaでは、Swingコンポーネントが画面に表示された後、それらはイベント処理スレッドと呼ばれる1つのスレッドでのみ操作できます。 。別のブロックにコードを記述し、このブロックにイベントへの参照を与えることができます 処理 スレッド 。 SwingUtilities クラスには、 invokeAndWait()という2つの重要な静的メソッドがあります。 およびinvokeLater() コードのブロックへの参照をイベントに配置するために使用します キュー 。 構文 public static void invokeAndWait(Runnable doRun) throws Interr