java多线程 Lock
时间: 2023-08-29 20:12:34 浏览: 88
Java多线程编程之Lock用法实例
Java中的Lock是一种同步机制,用于控制多个线程对共享资源的访问。它提供了比传统的synchronized关键字更广泛的操作,并且更加灵活和强大。
Lock接口提供了以下方法:
1. lock():获取锁,如果锁不可用,则线程阻塞。
2. unlock():释放锁。
3. tryLock():尝试获取锁,如果锁不可用,则立即返回false,否则返回true。
4. tryLock(long timeout, TimeUnit unit):尝试获取锁,如果锁不可用,则等待指定时间后返回false,否则返回true。
5. newCondition():创建一个条件变量,用于线程间通信。
通过使用Lock,我们可以实现更细粒度的控制,例如可以实现公平锁、可重入锁、读写锁等。
下面是一个简单的使用Lock的例子:
```java
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class LockExample {
private Lock lock = new ReentrantLock();
public void foo() {
lock.lock();
try {
// 访问共享资源
} finally {
lock.unlock();
}
}
}
```
在上面的例子中,我们使用了ReentrantLock实现了Lock接口,并在foo方法中获取了锁。在try块中访问共享资源,并在finally块中释放锁,确保锁的正确释放。
阅读全文