#476 Время выполнения задач в ThreadPoolExecutor
За какое время выполнится программа на машине с 1 cpu без HT?
static void sleepOneSecond() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
public static void main(String[] args) {
try (var pool = new ThreadPoolExecutor(
/*core pool size*/ 2,
/*maximum pool size*/ 10,
/*keepAliveTime value and unit*/ 30,
TimeUnit.SECONDS,
new ArrayBlockingQueue<>(10))) {
var start = System.currentTimeMillis();
for (int i = 0; i < 10; i++) {
pool.execute(Pool::sleepOneSecond);
// а если вот так?
/*
var t = new Thread(Pool::sleepOneSecond);
t.setDaemon(true);
pool.execute(t);
*/
}
Runtime.getRuntime().addShutdownHook(new Thread(() ->
log.info("Time taken: " + (System.currentTimeMillis() - start))));
}
}
Разбор вопроса
Войди, чтобы начать диалог
Ментор ведёт диалог по текущему вопросу и учитывает предыдущие сообщения.
Войти
Доступно с Premium
Это лишь одно из решений, доступных с Premium. А ещё:
- 250+ продвинутых лекций
- 1300+ практических заданий
- 500+ решений задач с реальных собеседований
- Именные сертификаты Java Hub
- Расширенный доступ к AI-ментору