AWTEventMulticaster — 안전한 AWT 다중 이벤트 디스패치

AWTEventMulticaster — 안전한 AWT 다중 이벤트 디스패치

AWTEventMulticasterjava.awt.event 패키지에 정의된 AWT 이벤트에 대해 효율적이고 스레드 안전한 멀티캐스트 이벤트 디스패치를 구현해요.

출처: Java API Reference

본문

public class AWTEventMulticaster extends Object implements ComponentListener , ContainerListener , FocusListener , KeyListener , MouseListener , MouseMotionListener , WindowListener , WindowFocusListener , WindowStateListener , ActionListener , ItemListener , AdjustmentListener , TextListener , InputMethodListener , HierarchyListener , HierarchyBoundsListener , MouseWheelListener

이 클래스는 두 개의 EventListener 쌍으로 구현되며 생성 시점에 설정돼요. AWTEventMulticaster는 불변(immutable)이라서 addremove 메서드가 이 객체를 전혀 변경하지 않아요.

필요하면 새로운 AWTEventMulticaster가 생성돼요. 덕분에 이벤트 디스패치가 진행되는 동안에도 리스너를 안전하게 추가하고 제거할 수 있어요. 다만 디스패치 중에 추가된 리스너는 현재 디스패치 중인 이벤트에 대해서는 통지를 받지 못해요.

add 메서드들은 모두 null 인자를 허용해요. 첫 번째 인자가 null이면 두 번째 인자를, 첫 번째만 있으면 첫 번째를, 둘 다 있으면 새 멀티캐스터를 만들어 반환해요. remove 메서드는 두 인자가 ==로 같으면 null을 반환해요.

Swing에서는 유사한 로직을 위해 EventListenerList를 사용해요. JDK 1.1부터 사용할 수 있어요.

더 알아보기