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

2022-08-31 17:39:42

有没有可能让一个线程写入 Java 的 ,而另一个线程从套接字读取,而线程不必在套接字上同步?OutputStreamSocketInputStream


答案 1

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

通常,如果没有要读取的内容,则读取线程将阻塞,如果指定了超时,则读取操作可能会超时。

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


答案 2

是的,这很安全。

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


推荐