ExecutorService might execute on calling thread?
android, java
Solution
`ExecutorService` is an interface which defines a broad contract. If you look at implementations, say `ThreadPoolExecutor` for example, you will have more precise characteristics:
An ExecutorService that executes each submitted task using one of possibly several pooled threads, normally configured using Executors factory methods.
Note that the javadoc linked above details the fact that the `ExecutorService`s returned by the various `Executors` factory methods are `ThreadPoolExecutor`s.
So to answer your question more directly: `Executors.newFixedThreadPool(threads)` will not execute tasks on the calling thread.
Problem
If you read the documentation for Executor.execute, it says: The command may execute in a new thread, in a pooled thread, or in the calling thread, at the discretion of the Executor implementation. My understanding is that, by calling thread, they mean the thread that calls the `execute` command. This has never happened in my experience, so my question is: Does this really ever happen? Since the calling Thread controls the UI, I cannot allow additional work on the calling Thread. I am particularly concerned about whether this could happen when I construct the `ExecutorService` using the `Executors.newFixedThreadPool(threads)` method.