Эти два метода в SwingWorker меня путают в данный момент, и кажется, что их очень легко использовать неправильно.Как правильно используются методы publish() и process() в SwingWorker?
Метод publish() описывает следующее:
Посылает куски данных методу процесса (java.util.List). Этот метод должен использоваться из метода doInBackground для предоставления промежуточных результатов для обработки в потоке отправки событий внутри метода процесса.
Что это значит для меня является то, что в то время как мой рабочий поток выполняет его метод doInBackground(), я могу создать «ломти» (должно ли это быть что-либо конкретным или это просто способ ссылаться на объекты сообщений?) , а затем опубликовать их для обработки на моем графическом интерфейсе Swing.
Это приводит меня к process(). В javadoc представлены следующие данные:
Получает куски данных из метода публикации асинхронно в потоке отправки события.
Просмотрев документацию для обоих методов, может ли кто-нибудь прояснить, за что механизм стоит за тем, как это происходит? Я понимаю, что это асинхронный процесс в соответствии с документацией, но поскольку он происходит на EDT, я представляю, что есть определенная предсказуемость.
В publish()
документация говорится это:
Поскольку метод процесса вызывается асинхронно на событие отправки тема несколько вызовов к методу публикации может произойти до того, как метод процесса выполняются. Для целей производительности все эти вызовы объединены в один вызов с помощью конкатенированных аргументов.
Итак, мой вопрос заключается в два раза:
- Кто должен называть
process()
? - Что такое рабочий процесс для
process()
в контексте SwingWorker и EDT?
Пожалуйста, дайте мне знать, если требуется какое-либо разъяснение.
'process()' - это обратный вызов. Вам не нужно называть это. 'process()' вызывается в EDT библиотекой. – johnchen902