Java での SwingUtilities.invokeLater() の使用

Zeeshan Afridi 2023年10月12日
Java での SwingUtilities.invokeLater() の使用

Java プログラミングでは、同時アクセスを防止する簡単に実現可能な方法を開発者に提供するために、Swing 設計者は、アクセスするすべてのコードが同じスレッドで実行される必要があるという規則を提供しました。

SwingUtilities.invokeLater() メソッドは、Abstract Window Toolkit (AWT) イベントディスパッチスレッドでランナブルを実行します。 これは、Swing データ構造がスレッドセーフではないためです。

スレッド セーフとは、エラーを引き起こすことなく、複数のスレッドから並列に使用できることを意味します。

Java での SwingUtilities.invokeLater() メソッドの使用

SwingUtilities.invokeLater() メソッドは、Java アプリケーションでマルチスレッドを使用し、アプリケーションのユーザー インターフェイスとして Swing を使用する場合に重要です。 ユーザー インターフェイスの更新はすべて、イベント ディスパッチ スレッドで行う必要があります。

スレッド内のコードは、イベント ハンドラーから直接呼び出されるわけではありませんが、グラフィカル ユーザー インターフェイス (GUI) の更新コードを特別に調整し、通常、そのコードはイベント ディスパッチ スレッドで呼び出されます。

SwingUtilities.InvokLater() コード:

package codes;

import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class Codes {
  protected static void frameUI() {
    // Creating JFrame and calling from the main method
    JFrame myFrame = new JFrame("Testing SwingUtilities.Invokelater");
    myFrame.setBounds(20, 20, 350, 250);
    myFrame.setVisible(true);
    System.err.println(myFrame.getSize());
    myFrame.setResizable(false);
    System.err.println(myFrame.getSize());
  }

  public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
      @Override
      public void run() {
        frameUI(); // Calling Jframe
      }
    });
  }
}

イベントディスパッチスレッド

Java プログラミングでは、具体的には、Swing を使用してグラフィカル ユーザー インターフェイス (GUI) ベースのプログラミングを行う場合、マルチスレッドを経験し、イベント ディスパッチ スレッドを聞いたり使用したりしている必要があります。

イベント ディスパッチ スレッドは、イベント ハンドラを呼び出すスレッドです。 基本的に、ユーザー インターフェイス (UI) コード全体がこのスレッドによって実行されます。

多くのエラーを回避するのに役立つため、1つの指定されたスレッドでユーザー インターフェイス (UI) 全体を処理することをお勧めします。

Java スレッディング

スレッド化は、コンピューター プログラミングの一般的な概念です。 スレッドは、プロセス全体の軽量なサブプロセスです。

アプリケーションの並列処理の全体的なパフォーマンスが向上します。 アプリケーションは、アプリケーション タスクの性質に応じて、独立して実行される場合もあれば、依存して実行される場合もある小さな実行可能ユニットに分割されます。

Java での Thread の構文:

Thread myThread = new Thread();

各スレッドには、個別の制御フローを表す 1つのプロセスがあります。 これらは、Web サーバーとネットワーク サーバーに正常に実装されています。

著者: Zeeshan Afridi
Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn

関連記事 - Java Swing