Если убрать все из метода run, то программа будет считывать строки бесконечно, почему так? Мы один раз запустили reader.readLine в 16 строке, где он отработал и более reader не вызывается.