SecondaryLoop — 중첩 이벤트 루프
SecondaryLoop — 중첩 이벤트 루프
SecondaryLoop는 중첩 이벤트 루프(nested event loop)를 실행하기 위한 헬퍼 인터페이스예요. 이 인터페이스를 구현하는 객체는 EventQueue.createSecondaryLoop() 메서드로 만들어져요.
본문
public interface SecondaryLoop {
boolean enter();
boolean exit();
}
인터페이스는 enter()와 exit() 두 메서드를 제공하며, 이벤트 루프를 시작하고 중지하는 데 사용돼요.
enter()가 호출되면 현재 스레드는 exit() 메서드로 루프가 종료될 때까지 차단돼요. 또한 이벤트 디스패치 스레드에 새 이벤트 루프가 시작되는데, 이 스레드는 현재 스레드일 수도 있고 아닐 수도 있어요.
루프는 어느 스레드에서나 exit()를 호출해 종료할 수 있어요. 루프가 종료된 후에는 SecondaryLoop 객체를 재사용해 새 중첩 이벤트 루프를 실행할 수 있어요.
주요 메서드
enter()— 현재 스레드의 실행을 차단하고 새 중첩 이벤트 루프를 시작해요. 성공적으로 진입했으면true, 실패했으면false를 반환해요.exit()—enter()로 차단된 스레드의 실행을 풀고 이벤트 루프를 종료해요. 종료가 예약되었으면true, 실패했으면false를 반환해요.
이 인터페이스는 이벤트 디스패치 스레드를 계속 처리하면서도 별도의 중첩 루프를 돌려야 할 때(예: 모달 대화형 동작) 유용해요.