Java套接字多线程安全吗?

JRR*_*JRR 17 java sockets multithreading thread-safety

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

NPE*_*NPE 16

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

值得注意的是,即使是OS级别的单个套接字写入也不一定是原子的.有关进一步的讨论,请参阅从多个线程在同一TCP套接字上发出阻塞write()调用是否安全?注意sendmsg()函数系列.


Cra*_*lus 5

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

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