Ответ
При повторном вызове start() для одного потока будет выброшено неконтролируемое исключение IllegalThreadStateException.
Причина: Поток в Java имеет жизненный цикл. После вызова start() он переходит из состояния NEW в RUNNABLE (или сразу в запущенное состояние). Повторная попытка запуска потока, который уже вышел из состояния NEW, нарушает контракт метода и приводит к исключению.
Пример, демонстрирующий ошибку:
public class DoubleStartExample {
public static void main(String[] args) {
Thread thread = new Thread(() -> {
System.out.println("Поток выполняется.");
});
thread.start(); // Поток переходит в состояние RUNNABLE
System.out.println("Первый start() выполнен.");
try {
thread.start(); // Попытка запустить тот же поток снова
} catch (IllegalThreadStateException e) {
System.err.println("Ошибка: " + e.getMessage());
// Вывод: Ошибка: thread already started
}
}
}
Как правильно: Если нужно выполнить задачу повторно, следует создать новый экземпляр Thread или использовать механизмы повторного выполнения (например, ExecutorService).