Java并发性,锁监视器
我正在我的应用程序中使用Lock,我想知道在这种情况下监视器是什么:Java并发性,锁监视器,java,concurrency,locking,Java,Concurrency,Locking,我正在我的应用程序中使用Lock,我想知道在这种情况下监视器是什么: public class BoundedBuffer { private final String[] buffer; private final int capacity; private int front; private int rear; private int count; private final Lock lock = new ReentrantLock()
public class BoundedBuffer {
private final String[] buffer;
private final int capacity;
private int front;
private int rear;
private int count;
private final Lock lock = new ReentrantLock();
private final Condition notFull = lock.newCondition();
private final Condition notEmpty = lock.newCondition();
public BoundedBuffer(int capacity) {
super();
this.capacity = capacity;
buffer = new String[capacity];
}
public void deposit(String data) throws InterruptedException {
lock.lock();
try {
while (count == capacity) {
notFull.await();
}
buffer[rear] = data;
rear = (rear + 1) % capacity;
count++;
notEmpty.signal();
} finally {
lock.unlock();
}
}
在本例中,当调用deposit方法时,整个对象是monitor还是only lock?这就像使用
synchronize(This)
锁定整个实例一样?整个对象在这里没有任何特殊意义。监视器意味着锁定和条件的组合,因此可以自动执行检查和阻止,直到发生某种情况,请参阅
lock.lock()
类似于synchronized
关键字,但lock
提供了更大的灵活性。除其他外,它可以创建允许通知满/空状态的条件,并连接到此锁