synchronized和lock对比
时间: 2023-12-13 10:05:06 浏览: 32
Synchronized与Lock
`synchronized` 和 `Lock` 是 Java 中用于实现线程同步的两个关键字。它们的作用都是保证在同一时刻只有一个线程可以执行某段代码。
下面是 `synchronized` 和 `Lock` 的一些对比:
1. 使用方法不同:`synchronized` 关键字是 Java 的内置关键字,可以直接使用;而 `Lock` 是 Java 的一个类,需要通过实例化来使用。
2. 加锁方式不同:`synchronized` 关键字可以用于方法和代码块,加锁时会自动获取锁,释放锁时也会自动释放;而 `Lock` 需要手动调用 `lock()` 方法获取锁,并需要手动调用 `unlock()` 方法来释放锁。
3. 可重入性不同:`synchronized` 关键字是可重入的,也就是说,当一个线程获得了某个对象的锁之后,再次请求这个对象的锁时会直接获取;而 `Lock` 是不可重入的,如果一个线程已经获得了某个 `Lock` 对象的锁,再次请求这个锁时会造成死锁。
4. 灵活性不同:`synchronized` 关键字的加锁和释放锁是由 JVM 自动管理的,无法手动控制;而 `Lock` 可以手动控制锁的加锁
阅读全文