gpt4 book ai didi

java - Prevayler 的同步策略是什么?

转载 作者:搜寻专家 更新时间:2023-10-31 20:07:55 25 4
gpt4 key购买 nike

Prevayler 保证所有写入(通过其事务)都是同步的。但是阅读呢?

如果不使用显式同步(在用户代码中),脏读是可能的吗?

如果业务对象被解读为:

// get the 3rd account
Accont account = (Bank)prevayler.prevalentSystem().getAccounts().get(2);

?

如果是这样,什么同步策略对用户代码有益?

(假设业务对象 A 包含业务对象 B 的集合),

  • 使用同步集合(A 中的 Bs),例如来自 java.util.concurrent 包?
  • 将集合读取外部事务与集合写入事务内部,例如使用围绕读取和写入的“同步(集合)”代码?

最佳答案

推荐的方法是使用 JMatch Query 和 Prevayler.execute(Query)。直接或使用子类化。

返回的结果必须是原始值或不可变对象(immutable对象)。如果您计划返回可变对象,您应该子类化 JMatch Query 来执行这些深拷贝。通过这种方式,您可以获得一个系统,该系统将每个合理的读取与其他(合理的)读取和写入锁定在一起。这可以加快和简化开发,尤其是对于没有多线程编程经验的开发人员。

如果您需要在高并发负载下获得更高的性能(这应该是一种罕见的情况),您确实可以使用上述细粒度锁定 - 使用“同步”和 java.util.concurrent。

参见 this discussion了解更多详情。

关于java - Prevayler 的同步策略是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/454294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com