SwingWorker
는 다음과 같은 목적을 위해 사용됩니다의 차이 : 응답되는 것을 GUI를 방지하기 위해 다른 스레드에서 장기 실행 작업을 실행하기위한자바 - SwingWorker의 및 SwingUtilities.invokeLater()
done()
메소드를 통해 태스크의 끝에서 장기 실행 태스크에 의해 생성 된 결과로 GUI를 갱신하는 경우.publish()
및process()
메소드를 사용하여 태스크에 의해 생성되고 공개 된 중간 결과와 함께 GUI를 수시로 업데이트하십시오. 다음과 같이
SwingUtilities.invokeLater()
위의 작업을 수행 할 수 있습니다 : 그것은 또한 장기 실행 작업을 실행할 수있는 다른 스레드를 만들 것 같은
- 대신 EDT에서
SwingWorker.execute()
방법을 실행, 우리는ExecutorService.submit(new MyRunnable())
을 실행할 수 있습니다. - 작업이 끝나면 GUI를 업데이트하기 위해 작업 마지막에
SwingUtilites.invokeLater(new RunnableToExecuteDoneMethodCode())
코드 (done()
case1 메서드로 작성)를 넣을 수 있습니다. - 작업 중간에 GUI를 업데이트하려면 case1에서
publish()
메서드를 호출 한 위치에SwingUtilites.invokeLater(new RunnableToExecuteProcessMethodCode())
코드 (사례 1의process()
메서드로 작성)를 넣을 수 있습니다.
내가 질문 Java - SwingWorker - Can we call one SwingWorker from other SwingWorker instead of EDT에 지정된 문제가 SwingUtilities.invokeLater()
에 의해 해결 될 수 있지만 SwingWorker
본인은 '질문'이 무엇인지 확실히 모르겠습니다. – akf
@akf 확실하지 않은 경우 퇴장하십시오. Simple :) –
당신이 참조하는 문제는 SwingWorker를 사용하여 해결할 수 있습니다. 저의 대답을보십시오. –