📄 cubbyhole2.java
字号:
import java.util.concurrent.locks.*;
public class CubbyHole2 {
private int contents;
private boolean available = false;
private Lock aLock = new ReentrantLock();
private Condition condVar = aLock.newCondition();
public int get(int who) {
aLock.lock();
try {
while (available == false) {
try {
condVar.await();
} catch (InterruptedException e) { }
}
available = false;
System.out.println("Consumer " + who + " got: " + contents);
condVar.signalAll();
} finally {
aLock.unlock();
return contents;
}
}
public void put(int who, int value) {
aLock.lock();
try {
while (available == true) {
try {
condVar.await();
} catch (InterruptedException e) { }
}
contents = value;
available = true;
System.out.println("Producer " + who + " put: " + contents);
condVar.signalAll();
} finally {
aLock.unlock();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -