Код: Выделить всё
ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(2);
ScheduledFuture scheduledFuture = executor.scheduleAtFixedRate(() -> {
System.out.println("Executing every 3 seconds with: " + Thread.currentThread().getName());
try {
Thread.sleep(4000);
} catch (Exception ex) {}
System.out.println("Executed with: " + Thread.currentThread().getName());
}, 1, 3, TimeUnit.SECONDS);
Код: Выделить всё
Executing every 3 seconds with: pool-1-thread-1
Executed with: pool-1-thread-1
Executing every 3 seconds with: pool-1-thread-1
Executed with: pool-1-thread-1
Executing every 3 seconds with: pool-1-thread-2
Executed with: pool-1-thread-2
Это ожидаемое поведение ScheduledThreadPoolExecutor? Если да, то есть ли способ гарантировать, что задачи будут немедленно подхвачены доступными потоками, даже если предыдущая задача превышает указанный период?
Будем очень признательны за любые идеи и предложения. Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/784 ... vious-task
Мобильная версия