2011-09-06 8 views
6

Java Swing을 처음 사용하고 제 질문은 이벤트 대기열 및 발송 스레드와 관련이 있습니다.다중 이벤트 발송 스레드

나는 AppContext 인스턴스 당 각각 여러 이벤트 대기열을 가질 수 있음을 읽었습니다. 마찬가지로 AppContext 이벤트 큐마다 자체 이벤트 디스패치 스레드가 있음을 의미합니다.

+2

에 대한 기본적인 것들, invokeLater()에 랩해야합니까? –

+0

@Gnon 제 의도는 하나의 디스패치 스레드 만 있으면 여러 이벤트 큐를 처리하는 방법이 무엇인지 아는 것입니다. – Poorna

+1

도움을받을 수있는 곳으로의 링크를 제공 할 수 있다면. :) –

답변

3

내가 아는 한 하나의 이벤트 발송 스레드 만있을 수 있습니다.

분명히 AppContext is not meant to be used by developers이지만, 나는 그것에 익숙하지 않습니다.

+1

+1 애플릿 컨테이너 인 것처럼 보입니다. – trashgod

+1

일반적으로 별도의 스레드 그룹에 할당 된 각 AppContext에는 자신의 EDT가 있음을 간접적으로 말하는 자체 큐가 있습니다. – Poorna

+0

대부분의 경우에도 동일한 JVM에서 실행되는 두 개의 AppContext를 사용하면 두 개의 EDT가 제공됩니다. 목적은 프로그램을 완전히 분리시킵니다. –

1

1) 기본적으로 당신은 당신의 코드가 모든 변경) EDT에서 수행해야합니다 (EDT에서 수행 될 경우 의심이있는 경우

2), 그것을 테스트하는 것이 가능하고, 알 필요가

if (EventQueue.isDispatchThread()) { 

또는 (EDT에있는 경우 그 사실 동일합니다 및 반환)

if (SwingUtilities.isEventDispatchThread()) { 

here 또는 here

3) 배경 작업의 모든 출력은 여러 EDTs 원하는 것 또는이 이론적 인 이유가 Concurency in Swing

관련 문제