Existe la clase BufferedReader la cual contiene un método que te permite saber cuando está listo el flujo para lectura.
bufferedReader.ready();
Example:
while(running){
try {
if(reader.ready()){
String textString
=reader.
readLine(); System.
out.
println(textString
); }
e.printStackTrace();
}
}
Donde running sera tu variable booleana que determinara si el hilo continua o no su ejecución.
en el hilo defines un metodo para detenerlo
public void _stop(){
running=false;
}
y pasado el lapso de tiempo que quieres llamas a este método y el hilo detendrá su ejecución
espero te sirva
un saludo.