#476 Время выполнения задач в ThreadPoolExecutor

Компании:
Альфа-Банк
Темы:
JavaМногопоточностьКод ревью

За какое время выполнится программа на машине с 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))));
    }
}

Разбор вопроса

Ментор
Ответь как на реальном собеседовании. Я задам уточняющие вопросы, а затем сравню твой ответ с эталонным и покажу точность в %.
Войди, чтобы начать диалог Ментор ведёт диалог по текущему вопросу и учитывает предыдущие сообщения.
Войти