Jen jsem položil otázku o tom, proč má závit vypínání nefunguje. To skončilo bytí kvůli readLine()
blokování mé vlákno před vypnutí vlajka mohla být uznána. To bylo snadné opravy kontrolou ready()
před voláním readLine()
.
Nicméně, já jsem teď s použitím DataInputStream
provést následující v sérii:
int x = reader.readInt();
int y = reader.readInt();
byte[] z = new byte[y]
reader.readFully(z);
Vím, že jsem mohl realizovat svůj vlastní ukládání do vyrovnávací paměti, která by kontrolovat systémem souborů vlajku při načítání do vyrovnávací paměti. Ale vím, že by to bylo únavné. Místo toho můžu nechat data ukládat do vyrovnávací paměti v rámci InputStream
třídy, a počkejte, až mám moji n
bytů číst, před provedením non-blocking číst - protože vím, jak moc je třeba číst.
4
bajtů pro první celé číslo4
bajtů pro druhý celé čísloy
- a
y
bajtů proz
bytového pole.
Namísto použití ready()
ke kontrole, zda je řádek ve vyrovnávací paměti, je tam nějaký ekvivalent ready(int bytesNeeded)
?