Java 混合优化/悲观锁 应用程序
嗨 我们有一个应用程序(J2EE/Hibernate/JPA),几个用户在一个公共实体上执行操作 为了简化,假设此应用程序类似于谷歌文档: 一个共享文档,其中多个用户可以同时更新 我们选择了optmistic锁来处理并发:Java 混合优化/悲观锁 应用程序,java,jpa,concurrency,optimistic-locking,pessimistic-locking,Java,Jpa,Concurrency,Optimistic Locking,Pessimistic Locking,嗨 我们有一个应用程序(J2EE/Hibernate/JPA),几个用户在一个公共实体上执行操作 为了简化,假设此应用程序类似于谷歌文档: 一个共享文档,其中多个用户可以同时更新 我们选择了optmistic锁来处理并发: 句子是独立的实体 很少有机会几个用户同时更新同一句话 在这种情况下,其中一个用户可以收到消息“对不起,另一个用户试图编辑相同的句子” 后台进程 到目前为止,一切顺利 但是现在,我们在这个应用程序中添加了后台进程(相当快的进程)。 他们定期做出改变(比如用一个词替换另一个词
- 句子是独立的实体
- 很少有机会几个用户同时更新同一句话
- 创建一个“用户操作”标志,该标志将在任何用户的任何操作期间设置
- 只有当此标志处于“关闭”状态时,作业才会启动
- 在任何运行的进程结束时,检查标志是否打开:如果是,取消此操作/回滚
LockModeType.READ
和LockModeType.WRITE
: