public static class ReaderThread extends Thread {
        private List<String> result = new ArrayList<String>();
        String line;
        public void run() {

            try { while (!isInterrupted()) {

                        line=reader.readLine();
                        result.add(line);
                        readStringCount.getAndIncrement();
                        System.out.println(readStringCount.get());
                        System.out.println(isInterrupted());
                        Thread.sleep(100);
            }

                } catch (IOException e) {
                System.out.println("Исключение: IOException "+ getName());
                } catch (InterruptedException e) {
                System.out.println("Исключение: InterruptedException "+ getName());
                return;
            }
            System.out.println("После цикла:"+readStringCount.get());
            System.out.println(isInterrupted());

        }
Эксперимент показал, что interrupt никак не влияет на цикл внутри нити. Я вводил число 5(количество считываний) Вводил 5 строк, после чего был выведен правильный результат. Но программа не завершилась на этом - приходилось вводить еще четыре строки. Только после этого цикл завершался, в результате того, что поток был закрыт в main и возникало IOException. Разъясните пожалуйста эту коллизию, будьте добры!