I am developing a Java Desktop Application. This app executes the same task public class MyTask implements Callable<MyObject> {
in multiple thread simultaneously.
Now, when a user clicks on a "start" button, I have created a SwingWorker myWorker
and have executed it.
Now, this myWorker
creates multiple instances of MyTask
and submits them to an ExecutorService
.
Each MyTask
instance has a loop and generates an intermediate result at every iteration. Now, I want to collect these intermediate results from each MyTask
instances as soon as they are generated. Then after collecting these intermediate results from every MyTask
instance, I want to publish it through SwingWorker.publish(MyObject)
so that the progress is shown on the EDT.
Q1. How can I implement this? Should I make MyTask
subclass of SwingWorker
instead of Callable
to get intermediate results also, because I think that Callable
only returns final result.
Q2. If the answer of Q1. is yes, then can you give me a small example to show how can I get those intermediate results and aggregate them and then publish them from main SwingWorker
?
Q3. If I can't use SwingWorker
in this situation, then how can I implement this?