【发布时间】:2015-01-09 10:27:21
【问题描述】:
我从网络套接字的输入流中读取到buffer
count = input.read(buffer)
然后在下一行,我正在使用
打印读取的内容str = new String(buffer,0,count);
Log.e("str",str);
然后我尝试将其写入PipedOutputStream 或PipedInputStream
pipedOutputStream .write(buffer);
在哪里,
pipedOutputStream = new PipedOutputStream(pipedInputStream)
问题是线程阻塞在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());
提前致谢
【问题讨论】:
-
@anders_reimer,这不是堆栈跟踪
标签: java android multithreading concurrency inputstream