I can’t use shutdown() and awaitTermination() because it is possible new tasks will be added to the ThreadPoolExecutor while it is waiting.
So I’m looking for a way to wait until the ThreadPoolExecutor has emptied it’s queue and finished all of it’s tasks without stopping new tasks from being added before that point.
If it makes any difference, this is for Android.
Thanks
Update: Many weeks later after revisiting this, I discovered that a modified CountDownLatch worked better for me in this case. I’ll keep the answer marked because it applies more to what I asked.
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 aFutureobject which may be placed into aCollectionwhich your main thread will then iterate over callingFuture.get()for each one. This will cause your main thread to halt execution until theExecutorServicehas processed all of theRunnabletasks.