Если maxPoolSize равен 1, тогда одновременно будет работать только один поток, поэтому одновременно будет выполняться только одна задача.Однако ThreadPoolExecutor имеет очередь, поэтому любые задачи, которые не выполняются немедленно, будут выполняться асинхронно, когда поток станет доступным.
Поэтому, когда у вас есть ThreadPoolExecutor с maxPoolSize 1, следующеекод немедленно вернется
executor.execute(runnable1);
executor.execute(runnable2);
, и runnable1 будет выполняться в потоке первым, после того как будет завершено выполнение runnable2.