Ho appena fatto una domanda sul perché il mio thread spegnimento non funzionava. E 'finito per essere a causa di readLine()
bloccare il mio thread prima che potesse essere riconosciuta la bandiera di arresto. Questo è stato facile da risolvere controllando ready()
prima di chiamare readLine()
.
Tuttavia, ora sto usando un DataInputStream
per effettuare le seguenti operazioni in serie:
int x = reader.readInt();
int y = reader.readInt();
byte[] z = new byte[y]
reader.readFully(z);
So che potrei realizzare il mio buffer che controllare il flag di file in esecuzione durante il caricamento del buffer. Ma so che questo sarebbe noioso. Invece, ho potuto lasciare che i dati essere memorizzate all'interno della InputStream
classe, e attendere che ho i miei n
byte leggere, prima di eseguire un non-blocking leggere - come io so quanto ho bisogno di leggere.
4
byte per il primo intero4
byte per il secondo interoy
- e
y
byte per ilz
byte.
Invece di utilizzare ready()
per verificare se v'è una linea nel buffer, c'è qualche equivalente ready(int bytesNeeded)
?