Java: неожиданный параллелизм в однопоточном ThreadPoolExecutor
У меня есть ряд MyRunnable
объекты запланированы на ExecutorService
создано Executors.newFixedThreadPool(1)
, каждый stepX
метод регистрирует, когда он начинает выполняться, и в соответствии с моим журналом у меня есть MyRunnable
объекты с перекрывающимися средами выполнения. У меня также есть ошибки времени выполнения, которые соответствуют двум MyRunnable
объекты выполняются одновременно, так что, скорее всего, это не просто часы, которые не работают.
class MyRunnable implements Runnable {
@Override
public void run() {
step1();
step2();
step3();
step4();
step5();
}
}
У меня нет звонков ThreadPoolExecutor#setMaximumPoolSize
в моем коде.
Насколько я могу сказать, либо мой Runnable
s вытесняются, или мой ThreadPoolExecutor
растет за его maximumPoolSize
, Я ожидал, что обе эти вещи будут невозможны.