Dúvida - InputStream

Bom dia pessoal,

Estou com uma duvida relacionado ao inputstrem.
Tenho um programa que faz a leitura de “X” dados usando:

inputStream is; while(i < X){ is.read(); ... }
Estou fazendo agora uma condição de timeout caso a transmissão caia no meio do envio

Gostaria de saber o porque do read ficar travado por um tempo (± 20sec) e só depois ler o -1 indicando o final do buffer.
Ele já tem algum timout dentro dele implementado?

Att.

Nunca vi ocorrer esse tipo de situação . Analise o modo como realiza a leitura do arquivo e/ou posta o seu código para análise.

Então,

Eu abro uma conexão bluetooth e fico esperando chegar os dados
A implementação é bem simples

while (j < 600) {
  //Lê os dados
  temp = (byte) is.read();
  System.out.print(" " + Integer.toHexString(temp & 0xFF));

   //Armazena dados
   dados[cont_dados] = temp;
   //incrementa o checksum
   check += temp;

   //Incrementa contador
   j++;
}

Eu pensava que logo depois de forçar a interrupção no envio do dado, o read() iria ler -1 indicando o final do buffer;
Mas ele demora um tempo pra retornar o -1
Eu li alguma coisa na API sobre ele ficar bloqueado mas não entendi muito bem o porque.