This question already has answers here:
Is there an advantage to use a Synchronized Method instead of a Synchronized Block?

(23个答案)


4年前关闭。




这是我在面试中被问到的面试问题之一。在Java中,我们可以使用同步方法完成的大多数工作,也可以使用同步块完成。那么,为什么Java提供两种相同机制的变体?

我想到了以下原因。
1.我们可以使用我们选择的锁(此对象或某个其他对象)使块尽可能小,其中,对于方法来说,它是一个完整的方法(可能很小也可能很大),并始终获得此或类的锁(对于静态方法)。

有人可以告诉我原因吗?

我很抱歉,如果这已经发布。

最佳答案

如您所说,同步块提供了详细级别的锁定。

同样,同步方法会锁定当前对象(可能需要或不取决于您要实现的目标),但是通过同步块,您可以自由锁定其他对象,因此线程可以输入此对象的其他实例方法

10-01 03:31
查看更多