I have a group of threads which all need to be executed in parallel and I must wait on all of them to complete.
Should I use the plain old Thread
or the ExecutorService
? for the ExecutorService.awaitTermination
I must give a certain time that I'm willing to wait but for Thread.join
I must not.
I don't do anything with the results that the threads give , I don't need any futures
.
EDIT:
ExecutorService es = Executors.newFixedThreadPool(kThreads);
List<Callable<Void>> calls = new LinkedList<>();
container.forEach(
calls.add(() -> { //creating a thread/task
BufferedImage scaledBufferedImage=imageService.scale(...);
imageService.transferToAWS(...);
return null;
})
);
es.invokeAll(calls); //executes each task
es.shutdown(); //ensure that no new tasks will be accepted
es.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS); //wait for all tasks to finish
return kLinksToTheScaledImages;