2012-04-26 3 views
0

백그라운드 스레드 (또는 작업자 스레드)에 관한 튜토리얼을 읽었으며 이제는 SwingWorker와 데몬 스레드 사이에 혼란스러워합니다. 그들은 둘 다 백그라운드에서 일을하기 때문에 내가 아닌 GUI를 응용 프로그램을 작성 해요 SwingWorker 또는 데몬 스레드를 만들어야합니까?java의 작업자와 데몬 스레드

답변

1

Thread에는 데몬과 비 데몬의 두 가지 유형이 있습니다. 비 데몬 Thread이 실행을 멈 추면 JVM이 실행을 중지합니다.

SwingWorker은 GUI가 응답하지 않도록 Event Dispatch Thread에서 비싼 시간에 비싼 작업을 비동기 적으로 수행하는 유틸리티입니다. A SwingWorkerThread이 아니며 실행을 위해 Thread으로 바뀔 수있는 Runnable 작업입니다.

GUI로 아무 작업도 수행하지 않는 경우 Thread을 사용하십시오. GUI에 대해 별도의 Thread에서 조치를 수행해야하는 경우 SwingWorker을 사용하십시오.

+0

안녕하세요, 제출 된 Runnable 작업을 실행하는 스레드가 데몬인지 아닌지 확인 하시겠습니까? – MinhHoang

+0

@FinalIllusion'SwingWorker # execute'를 호출하면 데몬'Thread'에서 실행됩니다. 그러나'SwingWorker'는 백그라운드에서 Event Dispatch Thread와 동기화하기 위해 많은 일을합니다. 따라서 GUI를위한 작업을 실제로 수행하지 않는 한, 그것을 사용해서는 안됩니다. – Jeffrey

+0

감사합니다, 그게 내가 SwingWorker Runnable 작업을 실행하는 스레드가 데몬인지 여부를 확인하는 방법을 모르기 때문에 알고 싶습니다. – MinhHoang

0

SwingWorker는 사용자 인터페이스와 상호 작용하기 쉬운 특수 클래스입니다. GUI 구성 요소에 대한 액세스는 특수 GUI 스레드에서만 수행해야합니다. SwingWorker에는 gui 스레드에서 실행되도록 보장 된 done 메서드가 있으므로 ui를 안전하게 업데이트 할 수 있습니다.

스윙 UI와 상호 작용하지 않으면 간단한 스레드를 사용해야합니다. 또한 당신은 스레드 풀이 ExecutorService 보길 좋은 몇 가지 스레드가 필요한 경우.

관련 문제