有什么方法可以确保调用外部方法是线程安全的?

use*_*582 5 java multithreading thread-safety

对于以下代码:

method() { object.externalMethod(); }

如果externalMethod()不是线程安全的.比如,它启动多个线程,这会做一些不安全的事情.我们还能确保method()是线程安全的,不知道externalMethod的实现吗?我认为在这里添加"同步"是不够的.

Tim*_*m B 4

添加同步就足够了 - 只要同步到对对象的所有访问,而不仅仅是同步到对 externalMethod 的所有访问。

当然,除非对象的内部无法正确同步,在这种情况下您确实无法执行任何操作。不过,该对象应该记录与之交互的正确方法。