SwingWorker

SwingWorker (스윙 워커)

백그라운드 스레드에서 오래 걸리는 작업을 수행하고 그 결과를 이벤트 디스패치 스레드(Event Dispatch Thread)에서 처리하도록 돕는 추상 클래스입니다.

출처: Java API Reference

본문

SwingWorker<T, V>T(결과 타입)와 V(중간 결과 타입) 두 개의 형식 매개변수를 갖습니다. 시간이 오래 걸리는 작업을 doInBackground()에 넣고, 완료 후 결과를 얻어 처리하거나 process로 중간 결과를 처리합니다.

예를 들어 doInBackground()에서 publish(number)로 중간 결과를 보내고 setProgress(...)로 진행률을 갱신하며, process(List<V> chunks)에서 이벤트 디스패치 스레드에 중간 결과를 반영할 수 있습니다.

SwingWorker는 Runnable을 구현하므로 Executor에 제출해 실행할 수도 있습니다.

중첩 enum으로 SwingWorker.StateValue가 있으며, 상태 바인딩 속성의 값(PENDING, STARTED, DONE)을 나타냅니다. Since: 1.6

주요 메서드·상세 (Methods & details)

주요 메서드는 백그라운드 작업을 정의하는 doInBackground(), 결과를 얻는 get(), 취소를 요청하는 cancel(boolean), 진행률을 설정·조회하는 setProgress(int)/getProgress(), 중간 결과를 게시하는 publish(V...)와 이를 처리하는 process(List), 완료 후 호출되는 done()입니다. execute()로 작업을 시작하고 getState()로 상태를 조회합니다.

더 알아보기 (Learn more)

Java 공식 API