私は、入力ストリームがブラックボックス(B)になっています。このストリームから入って来るすべてのメッセージは直列化されたバイナリデータであり、各メッセージは4バイトのintで始まります。そのほとんどはデータを記録しており、1日24時間稼動しています。 readInt()メソッドを使ってこれらの4バイトを読みます。現在、時には、メインスレッドがEOFExceptionで終了し、プログラムがクラッシュすることがあります。入力バイトストリームでreadInt()ブロックを作成する方法は?
これを調べたところ、readInt()の時点で入力ストリームに4バイト未満があることが判明しました。私の推測では、バッファは連続した読み込みの間に十分に速くいっぱいではないということです。私が考えている解決策には、読み込み前にavailable()をチェックすること(データの量を考慮してあまりにも多くのサイクルを消費する)や、例外が発生したときに再起動することが含まれます。私がreadInt()を使ってブロックすることができるのであれば、それが最良の方法だと思います。私はreadInt()の実装を見てきましたが、もう一度read()でブロックすることになります。
誰かが良い解決策を知っていますか?
テキストの壁紙を作成して読み込みフローをブロックしているようですが、いくつかの段落を追加すると読みやすくなり、回答に役立ちます。 –
'readInt()'メソッドは何ですか? – axtavt
あなたはどのようなストリームを読んでいますか? –