스윙

2011-09-12 1 views
3

메신저이 코드의 actionPerformed 버튼에서 direcly invokeLater 호출 동결 invokelater. 왜? invokelater 함수를 사용하지 않고도 동일한 결과를 얻을 수 있습니다.스윙

나는

Thread queryThread = new Thread() { 
     public void run() { 

대신 사용해야합니까?

편집 :

덕분에, 새로운 스레드가 사용되어야한다.

+0

"JButton의 ActionListener와 같은 이벤트 발송 스레드에서 invokeLater가 호출 된 경우 모든 보류중인 이벤트가 처리 될 때까지 doRun.run()이 지연됩니다 .d doRun.run () 이벤트 디스패치 스레드 (현재 스레드가 아닌) 긴장되지 않는 예외를 throw합니다. " http://download.oracle.com/javase/1.4.2/docs/api/javax/swing/SwingUtilities.html#invokeLater%28java.lang.Runnable%29 –

답변

5

invokeLater은 여전히 ​​디스패처 스레드에서 코드 실행을 종료합니다. invokeLater의 목표는 배경 스레드가 이벤트 발송자 스레드에서 작업을 게시하도록 허용하는 것입니다.

실제로 다른 스레드를 만들거나 같은 종류의 효과를 위해 스레드 풀을 사용하는 것처럼 들리거나, 예를 들어 SwingWorker처럼 들립니다. 무엇을 하든지 이벤트 디스패처 스레드에서 느린 메서드를 실행하지 않아야합니다.