本帖最后由 blz01003hm 于 2014-5-21 00:14 编辑
- import java.util.concurrent.locks.*;
- class BoundedBuffer {
- final Lock lock = new ReentrantLock();//说ReentrantLock无法转换为Lock???
- final Condition notFull = lock.newCondition();
- final Condition notEmpty = lock.newCondition();
- final Object[] items = new Object[100];
- int putptr, takeptr, count;
- public void put(Object x) throws InterruptedException {
- lock.lock();
- try {
- while (count == items.length)
- notFull.await();
- items[putptr] = x;
- if (++putptr == items.length) putptr = 0;
- ++count;
- notEmpty.signal();
- } finally {
- lock.unlock();
- }
- }
- public Object take() throws InterruptedException {
- lock.lock();
- try {
- while (count == 0)
- notEmpty.await();
- Object x = items[takeptr];
- if (++takeptr == items.length) takeptr = 0;
- --count;
- notFull.signal();
- return x;
- } finally {
- lock.unlock();
- }
- }
- }
复制代码
这是复制示例代码也说 ReentrantLock无法转换为Lock?
|
-
1.png
(120.56 KB, 下载次数: 9)
|