The whole idea of ββusing Executor is that it doesn't matter to you exactly when the method is called.
The only thing that is generally guaranteed is that the method will be executed when get() returned from Future .
When exactly it will be called depends on which Executor you use. When using the fixed thread pool that you use in this example, the call() method will be called as soon as there is a free thread, and no other task will face the given task in the queue (provided that there are enough tasks, you will have calls to the < call() methods, which will be executed at any time in your example).
Joachim sauer
source share