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

时间:2011-06-07 13:14:02

标签: java multithreading sockets

是否有可能让一个线程写入Java OutputStream的{​​{1}},而另一个线程从套接字Socket读取,而线程不必在套接字上同步?< / p>

2 个答案:

答案 0 :(得分:46)

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

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

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

答案 1 :(得分:9)

是的,那是安全的。

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

相关问题