关于 Java 中“最佳实践”的快速问题。假设您有一个数据库对象,该数据库的主要数据结构为映射。此外,假设您想要同步 map 的任何获取/设置信息。同步访问/修改 map 的每个方法是否更好,或者您是否希望在每次修改/访问 map 时在 map 周围创建同步块(synchronized block)?
最佳答案
取决于需要原子化的工作单元的范围。如果您有一个进程执行代表单个状态更改的多个操作,那么您希望在 Map 对象上同步整个进程。如果您要同步每个单独的操作,多个线程仍然可以在读取和写入时相互交错。这就像在未提交读模式下使用数据库游标一样。您可能会根据其他一些线程的半完成工作、看到不完整/不正确的数据状态来做出决定。
(当然,插入强制建议,使用 java.util.concurrent.locks 中的类而不是同步关键字:) )
关于java - 与数据库同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9730528/