浅析Java中的同步和互斥锁
在Java中,同步和互斥锁是用于管理多个线程对共享资源访问的一种机制。
- 同步锁(Synchronized):
同步锁是一种独占锁,即在同一时刻只有一个线程可以使用该锁保护的代码块。例如:
public class Counter {
private int count = 0;
public synchronized void increment() {
count++;
}
public synchronized int decrement() {
if (count <= 0) throw new IllegalArgumentException("Counter underflow");
count--;
return count;
}
}
- 互斥锁(Lock):
Java 14引入了java.util.concurrent.locks.Lock
接口,提供了更细粒度的锁管理。例如:
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class ExclusiveResource {
private Lock lock = new ReentrantLock();
public void useExclusiveResource() throws InterruptedException {
lock.lock(); // 获取锁
try {
// 执行独占资源操作
System.out.println("Using exclusive resource...");
// 如果需要,可以延时释放锁
Thread.sleep(500);
} finally {
// 无论是否发生异常,都需要释放锁
lock.unlock(); // 释放锁
}
}
}
总结,同步锁(Synchronized)是Java语言提供的原生同步机制,而互斥锁(Lock)则是基于java.util.concurrent.locks
库的更细粒度的锁控制。
还没有评论,来说两句吧...