两个线程从datainputstream读取时达到EOS

时间:2012-09-11 10:23:01

标签: java multithreading sockets datainputstream

我正在编写一个程序,程序创建一个线程,然后从套接字读取,我的问题是当创建两个线程时,都从datainputstream读取。一个线程正确读取而另一个线程遇到EOS并在读取字节时返回-1。我已经同步了我的运行方法

2 个答案:

答案 0 :(得分:0)

必须是因为第一个线程读取流直到EOF。这是预期的行为。如果你想拆分读数,例如在100字节之后交换读取器,使用read(byte[] b, int off, int len) 否则从一个线程读取数据然后共享它。

答案 1 :(得分:0)

你正在做的事情没有意义。无论是顺序还是并发,您都无法读取流两次。在这种情况下,如果线程A读取第一个字节,则线程B无法读取第一个字节。如果线程A读取所有字节,则线程B无法读取任何字节。