![](/img/trans.png)
[英]Using inputStream and OutputStream to read and write data to a process
[英]Using a common buffer to read from inputstream and to write to outputstream
我从网络套接字的输入流读取到buffer
count = input.read(buffer)
然后在下一行中,我使用
str = new String(buffer,0,count);
Log.e("str",str);
然后我尝试将其写入PipedInputStream
的PipedOutputStream
pipedOutputStream .write(buffer);
哪里,
pipedOutputStream = new PipedOutputStream(pipedInputStream)
问题是线程在pipedOutputStream .write(buffer);
处阻塞pipedOutputStream .write(buffer);
下面是从DDMS的线程调试工具中确认,
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:401)
at java.io.PipedInputStream.receive(PipedInputStream.java:394)
at java.io.PipedOutputStream.write(PipedOutputStream.java:176)
at java.io.OutputStream.write(OutputStream.java:106)
at java.io.PipedOutputStream.write(PipedOutputStream.java:147)
at java.io.OutputStream.write(OutputStream.java:82)
at com.example.Receiver.run(DRCReceiver.java:104)
任何人都可以告诉我,为什么以下命令不起作用( 阻止线程 )(将所有语句分组)
count = input.read(buffer)
str = new String(buffer,0,count);
Log.e("str",str);
pipedOutputStream .write(buffer);
但是下面的工作( 不阻塞线程 )。
count = input.read(buffer)
str = new String(buffer,0,count);
Log.e("str",str);
pipedOutputStream .write(str.getBytes());
提前致谢
看看JavaDoc 。 在这里您可以看到:“不建议尝试从单个线程使用两个对象”。 通常,您需要另一个尝试读取某些数据的线程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.