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