Java套接字是否支持全双工?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (19)

是否有可能让一个线程写入OutputStreamJava Socket,而另一个InputStream线程是从套接字读取的,而线程不必同步套接字?

提问于
用户回答回答于

当然。你描述的确切情况不应该是一个问题(同时阅读和写作)。

一般来说,如果没有什么要读取,读取线程将被阻塞,并且如果您已指定了超时,则读取操作可能会超时。

由于输入流和输出流是Socket中独立的对象,因此您唯一可能关心的是,如果您有两个线程尝试读取或写入(两个线程,相同的输入/输出流)时间?InputStream / OutputStream类的读取/写入方法不同步。但是,如果您使用InputStream / OutputStream的子类,则可能会调用您所调用的读/写方法。你可以检查javadoc是否可以调用你正在调用的任何类/方法,并且可以很快找到它。

用户回答回答于

是的,那很安全。

如果你想从InputStream读取多个线程,你必须更加小心(假设你一次读取多个字节)。

扫码关注云+社区