Java套接字多线程安全吗?

时间:2012-11-24 21:02:26

标签: java multithreading sockets thread-safety

如果我有多个Java线程同时写入同一个Socket实例,会影响从同一个套接字读取的对象的完整性吗?即,对象的内容是否会被弄乱等等。对象的排序是随机的。

2 个答案:

答案 0 :(得分:16)

一般来说,没有保证。不同对象的比特很可能最终在线上交错,使结果难以辨认。 因此,您需要提供外部同步。

值得注意的是,即使是OS级别的单个套接字写入也不一定是原子的。有关进一步的讨论,请参阅Is it safe to issue blocking write() calls on the same TCP socket from multiple threads?Be careful with the sendmsg() family of functions

答案 1 :(得分:5)

  

如果我有多个Java线程写入同一个Socket实例   同时

您将从多个主题写入相同的OutputStream 是什么让你认为没有同步是一个好主意?如果您开始同时从多个线程写入文件而没有同步,您是否希望该文件包含任何有意义的内容?