第五部分:Java 中的并发工具
Java 提供了多种并发工具类,帮助开发者更好地管理和控制多线程的执行。这些工具类主要位于 java.util.concurrent
包中(可点击跳转拓展一),提供了比传统的 synchronized
更强大和灵活的并发控制机制。
一、Lock 接口
Lock
接口是 Java 提供的一种比 synchronized
更灵活的锁机制。通过 Lock
,我们可以手动控制锁的获取和释放,支持尝试获取锁、定时获取锁等操作。
步骤
- 创建一个实现
Lock
接口的锁对象(如ReentrantLock
)。 - 在需要同步的代码块中,调用
lock()
方法获取锁,执行完后调用unlock()
方法释放锁。
示例代码
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
class Counter {
private int count = 0;
private final Lock lock = new ReentrantLock(); // 创建 ReentrantLock 对象
public void increment() {
lock.lock(); // 获取锁
try {
count++;
} finally {
lock.unlock(); // 确保释放锁
}
}
public int getCount() {
return count;
}
}
public class LockExample {
public static void main(String[] args) {
Counter counter = new Counter();
Thread t1 = new Thread(() -> {
for (int i = 0; i < 1000; i++) counter.increment();
});
Thread t2 = new Thread(() -> {
for (int i = 0; i < 1000; i++) counter.increment();
});
t1.start();
t2.start()