Verwendung von SwingUtilities.invokeLater() in Java

Zeeshan Afridi 12 Oktober 2023
Verwendung von SwingUtilities.invokeLater() in Java

Um den Entwicklern in der Java-Programmierung eine einfach zu erreichende Möglichkeit zu bieten, den gleichzeitigen Zugriff auf sie zu verhindern, haben die Designer von Swing die Regel eingeführt, dass aller Code, auf den zugegriffen wird, auf demselben Thread laufen sollte.

Die Methode SwingUtilities.invokeLater() führt das Runnable auf dem Event-Dispatching-Thread des Abstract Window Toolkit (AWT) aus. Wir tun das, weil Swing-Datenstrukturen nicht Thread-sicher sind.

Thread-Sicherheit bedeutet, dass es von mehr als einem Thread parallel verwendet werden kann, ohne dass es zu Fehlern kommt.

Verwendung der Methode SwingUtilities.invokeLater() in Java

Die Methode SwingUtilities.invokeLater() ist wichtig, wenn man Multithreading in Java-Anwendungen verwendet und Swing als Benutzeroberfläche für die Anwendungen verwendet. Alle Aktualisierungen in der Benutzeroberfläche müssen im Event-Dispatch-Thread erfolgen.

Der Code im Thread wird nicht direkt von einem Event-Handler aufgerufen, aber wir arrangieren speziell unseren Aktualisierungscode für die grafische Benutzeroberfläche (GUI), und im Allgemeinen wird dieser Code im Event-Dispatch-Thread aufgerufen.

SwingUtilities.InvokLater()-Code:

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
      }
    });
  }
}

Event-Dispatch-Thread

Bei der Java-Programmierung, insbesondere bei der Arbeit mit der auf der grafischen Benutzeroberfläche (GUI) basierenden Programmierung mit Swing, müssen Sie Multithreading durchlaufen und den Event-Dispatch-Thread gehört oder verwendet haben.

Der Event-Dispatch-Thread ist der Thread, der die Event-Handler aufruft. Im Wesentlichen wird der gesamte Code der Benutzeroberfläche (UI) von diesem Thread ausgeführt.

Es hat sich bewährt, einen einzigen festgelegten Thread zu haben, der die gesamte Benutzeroberfläche (UI) behandelt, da dies hilft, viele Fehler zu vermeiden.

Java-Threading

Threading ist ein allgemeines Konzept in der Computerprogrammierung. Ein Thread ist ein leichtgewichtiger Teilprozess des Gesamtprozesses.

Es verbessert die Gesamtleistung der Anwendungsparallelität. Die Anwendungen sind in kleine ausführbare Einheiten unterteilt, die manchmal unabhängig und manchmal abhängig von der Art der Anwendungsaufgabe ausgeführt werden.

Syntax von Thread in Java:

Thread myThread = new Thread();

Jeder Thread hat einen Prozess, der einen separaten Kontrollfluss darstellt. Diese werden erfolgreich in Webservern und Netzwerkservern implementiert.

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

Verwandter Artikel - Java Swing