0

私は、プログラムがソケットから読み取るスレッドを作成するプログラムを作成しています。私の問題は、2 つのスレッドが作成され、両方とも datainputstream から読み取られることです。1 つのスレッドが適切に読み取り、もう 1 つのスレッドが EOS に遭遇し、読み取りバイトとして -1 を返します。実行方法を同期しました

4

2 に答える 2

0

最初のスレッドがEOFまでストリームを読み取ったためである必要があります。これは予想される動作です。読み取り値を分割する場合、たとえば100バイト後にリーダーを交換する場合は、read(byte [] b、int off、int len)を使用します。それ以外の場合は、1つのスレッドからデータを読み取り、共有します。

于 2012-09-11T10:30:54.890 に答える
0

あなたがしていることは意味がありません。ストリームを 2 回読み取ることはできません。この場合、スレッド A が最初のバイトを読み取ると、スレッド B は最初のバイトを読み取ることができません。スレッド A がすべてのバイトを読み取った場合、スレッド B はそれらのバイトを読み取ることができません。

于 2012-09-11T11:44:35.057 に答える