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

是否有可能有一个线程写入Java SocketOutputStream ,而另一个线程从套接字的InputStream读取,而线程不必在套接字上同步?

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

通常情况下,如果没有任何可读的内容,读取线程将会被阻塞,如果您已经指定了超时值,读取操作可能会超时。

由于inputstream和输出stream是Socket内独立的对象,因此您唯一可能关心的是,如果您有两个线程尝试读取或写入(两个线程,相同的input/输出stream)时间? InputStream / OutputStream类的读/写方法不同步。 但是,如果您正在使用InputStream / OutputStream的子类,那么您正在调用的读取/写入方法是同步的。 你可以检查javadoc的任何类/方法你打电话,发现很快。

是的,这是安全的。

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