Задачу решил, однако все её делают чуть по другому Вот мой код. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; /* Считаем секунды */ public class Solution { public static void main(String[] args) throws IOException { InputStreamReader in = new InputStreamReader(System.in); BufferedReader reader = new BufferedReader(in); //create and run thread Stopwatch stopwatch = new Stopwatch(); stopwatch.start(); //read a string reader.readLine(); stopwatch.interrupt(); //close streams reader.close(); in.close(); } public static class Stopwatch extends Thread { private int seconds; public void run() { try { Thread current = Thread.currentThread(); while (!current.isInterrupted()) { seconds++; Thread.sleep(1000); } } catch (InterruptedException e) { } System.out.println(seconds); } } } У меня вывод в консоль идёт после блока try-catch. Валидатор,естественно, принял ответ. Всё, в том числе и "правильное решение " делают вывод в консоль в блоке catch. Логика понятна- interrupt () ставит флаг треда на true , выбрасывается исключение , в обработке исключения печатается количество секунд. А если interrupt() сработает в то короткое время, когда нить проснулась ? Флаг будет изменён на True и цикл while закончит работу, блок catch не отработает. Это я так думаю. Поясните, пожалуйста, в чем я заблуждаюсь.