Java에서 SwingUtilities.invokeLater() 사용

Zeeshan Afridi 2023년10월12일
Java에서 SwingUtilities.invokeLater() 사용

Java 프로그래밍에서 개발자에게 동시 액세스를 방지하는 쉽게 달성할 수 있는 방법을 제공하기 위해 Swing 디자이너는 액세스하는 모든 코드가 동일한 스레드에서 실행되어야 한다는 규칙을 제공했습니다.

SwingUtilities.invokeLater() 메소드는 AWT(Abstract Window Toolkit) 이벤트 발송 스레드에서 실행 가능 항목을 실행합니다. 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(Graphical User Interface) 기반 프로그래밍 작업을 수행할 때 다중 스레딩을 거쳐 이벤트 디스패치 스레드를 듣거나 사용해 보았을 것입니다.

이벤트 디스패치 스레드는 이벤트 핸들러를 호출하는 스레드입니다. 본질적으로 전체 사용자 인터페이스(UI) 코드는 이 스레드에 의해 실행됩니다.

많은 오류를 방지하는 데 도움이 되므로 단일 지정 스레드가 전체 UI(사용자 인터페이스)를 처리하도록 하는 것이 좋습니다.

자바 스레딩

스레딩은 컴퓨터 프로그래밍의 일반적인 개념입니다. 스레드는 전체 프로세스의 경량 하위 프로세스입니다.

응용 프로그램 병렬 처리의 전반적인 성능을 향상시킵니다. 애플리케이션은 애플리케이션 작업의 특성에 따라 때로는 독립적으로 실행되고 때로는 종속적으로 실행되는 작은 실행 가능 단위로 나뉩니다.

Java에서 Thread의 구문:

Thread myThread = new Thread();

각 스레드에는 별도의 제어 흐름을 나타내는 하나의 프로세스가 있습니다. 이들은 웹 서버와 네트워크 서버에서 성공적으로 구현됩니다.

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