Обратите внимание, что потоки Java любят есть исключения, которые выбрасываются из метода run ().
Поскольку у вас есть IO, например if((line = reader.readLine()) != null){
, а не try / catch, вы можете вызвать исключение и выйти.
Что мне нравится делать с потоками, так это помещать код основного потока в runImpl()
, чтобы run()
выглядело так.
public void run()
{
try
{
runImpl();
}
catch( Throwable t )
{
// log the throwable
}
}
Тогда, как минимум, вы обнаружите, что ваш поток выдал что-то неожиданное.