Java套接字是否支持全双工?
是否有可能有一个线程写入Java Socket
的OutputStream
,而另一个线程从套接字的InputStream
读取,而线程不必在套接字上同步?
当然。 你描述的确切情况不应该是一个问题(同时读和写)。
通常情况下,如果没有任何可读的内容,读取线程将会被阻塞,如果您已经指定了超时值,读取操作可能会超时。
由于inputstream和输出stream是Socket内独立的对象,因此您唯一可能关心的是,如果您有两个线程尝试读取或写入(两个线程,相同的input/输出stream)时间? InputStream / OutputStream类的读/写方法不同步。 但是,如果您正在使用InputStream / OutputStream的子类,那么您正在调用的读取/写入方法是同步的。 你可以检查javadoc的任何类/方法你打电话,发现很快。
是的,这是安全的。
如果你想从InputStream读取多个线程,你必须更加小心(假设你一次读取多个字节)。