在委托(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/