Я занимаюсь разработкой приложения для настольных компьютеров Java. Это приложение выполняет одну и ту же задачу public class MyTask implements Callable<MyObject> {
в нескольких потоках одновременно.Java - SwingWorker - problem
Теперь, когда пользователь нажимает кнопку «старт», я создали выполнил его.
Теперь этот myWorker
создает несколько экземпляров MyTask
и отправляет их в ExecutorService
.
Каждый экземпляр MyTask
имеет цикл и генерирует промежуточный результат на каждой итерации. Теперь я хочу собрать эти промежуточные результаты из каждого экземпляра MyTask
, как только они будут сгенерированы. Затем, после сбора этих промежуточных результатов из каждого экземпляра MyTask
, я хочу опубликовать его через SwingWorker.publish(MyObject)
, чтобы прогресс был показан на EDT.
Q1. Как это реализовать? Должен ли я сделать MyTask
подкласс SwingWorker
вместо Callable
, чтобы получить промежуточные результаты, так как я думаю, что Callable
возвращает окончательный результат.
Q2. Если ответ Q1. да, тогда вы можете дать мне небольшой пример, чтобы показать, как я могу получить эти промежуточные результаты и заполнить их, а затем опубликовать их из основного SwingWorker
?
Q3. Если я не могу использовать SwingWorker
в этой ситуации, то как это реализовать?
Когда вы собираете промежуточные результаты из каждой задачи, вы хотите, чтобы все они были из одной и той же? То есть собрать все результаты итерации 1, тогда результаты итерации 2? – mdma