Вся идея использования Executor
заключается в том, что вас не должно волновать , когда именно вызывается метод.
Единственное, что гарантировано в общем случае, - это то, что метод будет выполнен, когда get()
из Future
вернется.
Когда именно он будет вызван, зависит от того, какой Executor
вы используете. С фиксированным пулом потоков, который вы используете в этом примере, метод call()
будет вызываться, как только будет свободный поток, и никакая другая задача не будет стоять перед данной задачей в очереди (при условии, что задач достаточно у вас будет 3 call()
вызова методов, запущенных в любой момент времени в вашем примере.