A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© blz01003hm 高级黑马   /  2014-5-20 16:41  /  1446 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 blz01003hm 于 2014-5-21 00:14 编辑
  1. import java.util.concurrent.locks.*;
  2. class BoundedBuffer {
  3.    final Lock lock = new ReentrantLock();//说ReentrantLock无法转换为Lock???
  4.    final Condition notFull  = lock.newCondition();
  5.    final Condition notEmpty = lock.newCondition();

  6.    final Object[] items = new Object[100];
  7.    int putptr, takeptr, count;

  8.    public void put(Object x) throws InterruptedException {
  9.      lock.lock();
  10.      try {
  11.        while (count == items.length)
  12.          notFull.await();
  13.        items[putptr] = x;
  14.        if (++putptr == items.length) putptr = 0;
  15.        ++count;
  16.        notEmpty.signal();
  17.      } finally {
  18.        lock.unlock();
  19.      }
  20.    }

  21.    public Object take() throws InterruptedException {
  22.      lock.lock();
  23.      try {
  24.        while (count == 0)
  25.          notEmpty.await();
  26.        Object x = items[takeptr];
  27.        if (++takeptr == items.length) takeptr = 0;
  28.        --count;
  29.        notFull.signal();
  30.        return x;
  31.      } finally {
  32.        lock.unlock();
  33.      }
  34.    }
  35. }
复制代码

这是复制示例代码也说 ReentrantLock无法转换为Lock?

1.png (120.56 KB, 下载次数: 9)

1.png

评分

参与人数 1技术分 +1 收起 理由
SyouRai_Tsk + 1

查看全部评分

6 个回复

正序浏览

可编译通过了。。。
回复 使用道具 举报
海世山盟 发表于 2014-5-20 19:32
分别导包就没有问题。
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks. ...

谢谢 得了


但毕老师就导了个import java.util.concurrent.locks.*;

点评

可编译通过了。。。  发表于 2014-5-22 10:41
估计是那时没用高级编辑器,他懒得打两遍字。。  发表于 2014-5-21 16:58
回复 使用道具 举报
在我这没有任何问题啊。
回复 使用道具 举报
分别导包就没有问题。
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
因为那两个是两个接口,因此里面的方法都是抽象的你是不可能在locks里面找到他们的方法的。你必须单独导入才可以的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马