为什么同步方法可以使用同步块完成相同的操作

时间:2015-10-28 17:30:37

标签: java multithreading

这是我在接受采访时被问到的面试问题之一。在java中,我们可以使用synchronized方法执行的大部分操作也可以使用synchronized块完成。那么,为什么java提供相同机制的2种变体呢?

我想到了以下原因。 1.我们可以使用我们选择的锁(这个或另一个对象)来尽可能地创建块,其中,对于方法,它是一个完整的方法(可能是小的或大的)并且总是获得对此类或类的锁定(对于静态方法)。

有人可以告诉我还有什么原因吗?

如果已经发布,我道歉。

1 个答案:

答案 0 :(得分:1)

同步块按照您的说法提供粒度级别的锁定。

同步方法也会锁定当前对象(可能需要或不依赖于您想要实现的目标)但是使用synchronized块可以自由地锁定其他对象,因此线程可以输入此对象的其他实例方法< / p>