Java中两个同步块的区别

Ana*_*and 1 java synchronization

假设我有一个类Employee,我创建该类的对象为

Employee emp = new Employee();
Run Code Online (Sandbox Code Playgroud)

以下两个同步块之间有什么区别

synchronized(emp){ } and
synchronized(Employee.class)
Run Code Online (Sandbox Code Playgroud)

JB *_*zet 8

第一个使用一个Employee实例作为监视器.第二个使用Employee类作为监视器.

如果目标是保护员工的实例变量,那么第一个变量比第二个变量更有意义.如果目标是保护Employee类的静态变量,则第二个是有意义的,但不是第一个.