java取消读取操作
DataInputStream in;
byte[] b = new byte[1024];
for (;;){
in.read(b);
//do something
}
我有上面的代码。在另一个线程中,我正在处理一些其他事件。在这个线程中,我想取消上面代码中显示的读取操作。我该怎么办
你可以在下面搜索框中键入要查询的问题!
DataInputStream in;
byte[] b = new byte[1024];
for (;;){
in.read(b);
//do something
}
我有上面的代码。在另一个线程中,我正在处理一些其他事件。在这个线程中,我想取消上面代码中显示的读取操作。我该怎么办
# 1 楼答案
您需要使用
java.nio
从流中读取,此时您可以从另一个线程调用thread.interrupt()
来中断任何正在进行的read
# 2 楼答案
也许我误解了什么,但我想你们应该使用观察者模式
# 3 楼答案
你需要使用java。nio包,在这里查看http://rox-xmlrpc.sourceforge.net/niotut/
# 4 楼答案
您可以关闭正在读取的
InputStream
,也可以重新编写代码,使其仅在实际有数据要读取时读取数据,如果您不控制写入端,这几乎是不可能的# 5 楼答案
如果愿意,可以重置输入流:
# 6 楼答案
如果您从另一个线程发送一些数据呢
在这种情况下,读取线程可能不应该使用for循环,而是检查“terminator”序列