Java套接字多线程安全吗?

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


答案 1

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

有趣的是,即使是操作系统级别的单个套接字写入也不一定是原子的。有关进一步的讨论,请参阅从多个线程对同一 TCP 套接字发出阻塞 write() 调用是否安全?小心 sendmsg() 系列函数


答案 2

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

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


推荐