【发布时间】:2017-11-26 04:17:28
【问题描述】:
我是 Java 新手。 我正在通过编写小程序来练习。
在其中一个程序中,我有一个包含一些配置的对象。 可以在运行时更改此配置。 我通过序列化对象将配置保存到文件中。
在我看来,我必须在序列化之前锁定我正在序列化的对象,以确保它在序列化期间不会改变。
synchronized (myObject)
{
output.writeObject(myObject);
}
但是我读到应该尽量避免在同步块或任何其他形式的锁定下进行 IO 操作(例如写入文件)。这确实是有道理的,因为 IO 操作可能需要相对较长的时间,让其他线程等待/阻塞。
我想知道,是否有办法避免序列化被锁定... 欢迎提出任何建议。
【问题讨论】:
-
您意识到仅靠同步块不会阻止并发修改,对吧?
-
@shmosel 我知道我需要确保 myObject 的所有修改都发生在同步块/方法中,以确保此同步块在序列化期间保护我。但很高兴你能确保我知道你,谢谢。
-
我不同意你所读到的。在套接字编程中一直这样做。
-
@EJP 感谢您的评论。很高兴听到不同的意见,尤其是刚接触这门语言的人。
标签: java multithreading serialization io locking