java - Java中的委托(delegate)模式应该同步哪个方法

标签 java design-patterns synchronization

在委托(delegate)模式中,如果我有一个具体类和一个包装类:

class Wrapper {
    Concrete concrete = new Concrete();
    void fn() {
        concrete.fn();
    }
}

class Concrete {
    void fn() {
        ...
    }
}

如果fn()方法应该被同步,那么我应该把synchronized关键字放在哪里?如果我们假设 Concrete::fn() 只会被 Wrapper::fn() 调用,那么这两个地方都可以吗?

最佳答案

我发现在 Wrapper:fn() 上使用同步可能存在多个问题:

  • synchronized 应谨慎使用:仅锁定那些需要同步的部分。

  • 锁定机制应该是具体实现的关注点 - 如果可能的话(您可能有一个不需要同步的实现)

关于java - Java中的委托(delegate)模式应该同步哪个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36960357/

相关文章:

java - 使用 "this.create()"和 "this.render()"时 LibGDX 中出现堆栈溢出错误

java - 安卓 : faster solution to copying one file to another

design-patterns - Solidity - 从工厂模式到克隆工厂模式

c# - 何时将某些实体分离到不同的存储库中?

go - 尝试同步 goroutine 时出现死锁错误

java - 使用端口转发进行数据库配置

java - JPA单个查询获取嵌套集合

c++ - 如何巧妙地、多态地用许多不同的成员类型填充对象?

java - 我们是否同步最终的实例变量?如果是那么有什么用?

c++ - 等待变量变化