以下代码:
method() {
object.externalMethod();
}
如果externalMethod()不是线程安全的。比如,它启动多个线程,这会做一些不安全的事情。我们还能确保method()是线程安全的,不知道externalMethod的实现吗?我认为在这里增加“同步”是不够的。
答案 0 :(得分:4)
添加synchronized就足够了 - 只要您同步到对象的所有访问权限,而不仅仅是对externalMethod的所有访问权限。
除非对象的内部结构未能正确同步,否则你确实无法做任何事情。该对象应该记录与它交互的正确方法。