我正在开发一个必须将对象序列化为文件以供以后使用的应用程序。有多个线程同时调用方法writeObject
(用于不同的对象)。该方法是线程安全的吗?我必须在应用程序代码中同步写操作吗?
例如:线程1序列化对象A,线程2序列化对象B。如果我不同步它们,那么A和B是否在文件中相互混淆?谢谢!
取决于。如果他们正在写入同一个文件,则应该同步。但是,即使在对象序列化之外,这通常也是正确的:如果您有两个或多个线程写入同一流,则需要对其进行同步。
如果它们各自写入自己的流/文件,那么您就不会有资源冲突,那将是线程安全的
否,ObjectOutputStream
不是线程安全。 API似乎对此没有任何要求。您也可以检查源代码,其中只有线程安全性可以保证安全性。