并发编程中的锁与数据结构同步技术
1. 锁与信号量机制
在并发编程中,锁和信号量是实现线程同步的重要机制。互斥锁确保同一时间只有一个线程能进入临界区,若其他线程想进入已被占用的临界区,就会被阻塞,直到被通知再次尝试。而信号量是互斥锁的一种扩展。
每个信号量都有一个容量,用 c 表示。与互斥锁不同,信号量允许最多 c 个线程同时进入临界区,这个容量在信号量初始化时确定。信号量是最早的同步形式之一。
以下是一个信号量的 Java 实现代码:
public class Semaphore {
final int capacity;
int state;
Lock lock;
Condition condition;
public Semaphore(int c) {
capacity = c;
state = 0;
lock = new ReentrantLock();
condition = lock.newCondition();
}
public void acquire() {
lock.lock();
try {
while (state == capacity) {
condition.await();
}
state++;
} finally {
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



