If you are interested in knowing when a certain task completes, or a certain batch of tasks, you may use ExecutorService.submit(Runnable)
. Invoking this method returns a Future
object which may be placed into a Collection
which your main thread will then iterate over calling Future.get()
for each one. This will cause your main thread to halt execution until the ExecutorService
has processed all of the Runnable
tasks.
Collection<Future<?>> futures = new LinkedList<Future<?>>();
futures.add(executorService.submit(myRunnable));
for (Future<?> future:futures) {
future.get();
}