Можно ли у одного и того же потока вызвать два раза метод start

«Можно ли у одного и того же потока вызвать два раза метод start» — вопрос из категории Многопоточность, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Нет, у одного и того же потока нельзя вызвать start() дважды. При повторном вызове будет выброшено исключение IllegalThreadStateException. Поток можно запустить только один раз — после завершения его работы или остановки, повторный запуск невозможен.

Если нужно выполнить код несколько раз, создайте новый экземпляр Thread и запустите его:

Thread thread = new Thread(() -> {
    System.out.println("Running thread");
});
thread.start(); // OK
thread.start(); // IllegalThreadStateException

// Правильный вариант:
Thread newThread = new Thread(() -> {
    System.out.println("New thread");
});
newThread.start(); // OK