'Event'에 해당되는 글 1건

  1. 2010.03.15 Swing의 이벤트 핸들링 쓰레드 모델
안드로이드의 이벤트 처리 메커니즘과 Handler 개념을 이해하기 위해 먼저 스윙의 쓰레드에 대해 이해할 필요가 있다.

* 스윙의 이벤트 처리 쓰레드 관련 자료
 
  
Single 쓰레드 UI 모델
- 모든 UI 관련 작업은 하나의 쓰레드에서만 처리되어야 함. 그렇지 않으면 비정상적인 결과가 생김.
  => 멀티쓰레드로 하면 안되는 이유 : http://weblogs.java.net/blog/kgh/archive/2004/10/multithreaded_t.html
- 그 하나의 쓰레드를 흔히 Event-Dispatch Thread(EDT)라고 부름.
- EDT는 UI의 무분별한 갱신을 막고 일관성있는 화면 갱신 메카니즘을 제공
- EDT에서의 GUI 이벤트를 처리하는 작업은 빨리 끝나야 하며, 그렇지 않으면 화면은 unresponsive 상태가 됨. 
  기억하시라. 화면 갱신 작업은 하나의 쓰레드에서만 처리된다는 것을.
- EDT는 사용자의 비동기적인 요구에 대응하기 위해 Event Queue를 유지하며
  사용자의 요구는 이벤트 큐에 일단 저장되었다가 적절한 시점에 일괄적으로 처리됨.
 
 
* 스윙의 주요 쓰레드
- Initial Thread : 초기 애플리케이션 실행. 여기서 UI를 만들지는 않음.
- Event-Dispatch Thread : GUI 이벤트 처리(리스너에 이벤트 전달해서 콜백메소드 실행) 및
   스윙 컴포넌트 method(대부분 thread-safe하지 않음) 처리. 
   UI를 생성하고 UI와 상호작용하는 모든 코드는 EDT에서 실행됨.
- Worker Thread(Background Thread) : 시간이 소요되는 작업은 EDT에서 처리하지 말고,
    백그라운드 쓰레드로 만들어서 처리후 결과만 UI에 반영
 
  
* 스윙 주요 클래스
- SwingWorker : 백그라운드 작업을 처리하면서 EDT와 상호작용할 수 있게 해줌
- SwingUtilities.invokeLater(aRunnable) : EDT의 다른 작업이 다 끝난 후에 주어진 작업을 처리

Posted by 에코지오
,