Может быть, это тривиально, я изо всех сил пытаюсь понять простую документацию по SwingWorker .
Вот скопированное содержимое.
Рабочий процесс
В жизненном цикле SwingWorker участвуют три потока:
Текущий поток: в этом потоке вызывается метод execute (). Это планирует SwingWorker для выполнения в рабочем потоке и возвращает немедленно. Можно дождаться завершения SwingWorker, используя получить методы.
Рабочий поток: в этом потоке вызывается метод doInBackground (). Здесь должны происходить все фоновые действия. Чтобы уведомить PropertyChangeListeners об изменении связанных свойств используют firePropertyChange и getPropertyChangeSupport (). По умолчанию доступны два связанных свойства: состояние и прогресс.
Поток отправки событий: все действия, связанные с Swing, происходят на этом нить. SwingWorker вызывает методы process и done () и уведомляет всех PropertyChangeListeners в этом потоке.
Часто текущий поток является потоком отправки событий.
-
Рабочий поток не является EDT, поэтому код в doInBackground () не должен обращаться к элементам графического интерфейса. Я правильно понимаю?
Справочная информация:
У нас есть небольшой код, который использует SwingWorker, но имеет doInBackground (), создающий FileChooser и вызывающий setCurrentDirectory ()
. Я подозреваю, что это приводит меня к исключению почти так же, как http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6637181 (11-Closed, Not a Defect)