对象锁和类锁的的区别
时间: 2024-06-12 14:09:53 浏览: 125
透彻理解Java中Synchronized(对象锁)和Static Synchronized(类锁)的区别
对象锁和类锁的区别在于锁住的对象不同,对象锁是对实例对象进行加锁,而类锁是对类对象进行加锁。对象锁的作用范围是实例对象级别的,而类锁的作用范围是类级别的,可以对所有的对象实例起作用。
在 Java 中,对象锁是通过 synchronized 关键字来实现的,而类锁则是通过在 synchronized 关键字后跟随类来实现的。
下面是示例代码:
```java
public class ObjectLockExample {
private int count = 0;
public synchronized void increment() {
count++;
}
}
public class ClassLockExample {
private static int count = 0;
public static synchronized void increment() {
count++;
}
}
```
在 ObjectLockExample 类中,increment() 方法使用 synchronized 关键字来获取对象锁,每次只有一个线程可以调用该方法。
而在 ClassLockExample 类中,increment() 方法使用了 static 关键字和 synchronized 关键字来获取类锁,保证了在多个线程中只有一个线程可以调用该方法。
阅读全文