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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 刀郎去西藏 于 2015-12-29 23:39 编辑

我在跟着视频学习时,为什么我明明引入了"java.util.concurrent.locks.*",在程序中这句提示final Lock lock = new ReentrantLock();不兼容的类型。 ReentrantLock类不是实现了lock方法吗?这里不就是相当于父类引用指向子类对象,怎么能是不兼容的类型呢?望麻油门解答。
  1. import java.util.concurrent.locks.*;
  2. //不引入这个类就总会报下面的不兼容错误。这是为什么呢?上面有通配符呀!!!!!
  3. import java.util.concurrent.locks.Lock;
  4. class Resource{
  5.         private String name;
  6.         private int num = 1;
  7.         private boolean flag = false;
  8. //为什么会一直报不可兼容的类型???父类引用指向子类对象,怎么回事
  9.         final Lock lock = new ReentrantLock();
  10.         final Condition condition_pro = lock.newCondition();
  11.         final Condition condition_con = lock.newCondition();
  12.         public  void set(String name)throws InterruptedException{
  13.                 lock.lock();
  14.                 try{
  15.                         while(flag){
  16.                                 condition_pro.await();
  17.                         }
  18.                         this.name = name + "----" + num++;
  19.                         System.out.println("-------------------------"+Thread.currentThread().getName()+"我生产了"+this.name);
  20.                         condition_con.signal();
  21.                         flag = true;
  22.                         
  23.                         //catch(InterruptedException ie){}
  24.                 }finally{        
  25.                         lock.unlock();
  26.                 }
  27.         }
  28.         public void out()throws InterruptedException{
  29.                 lock.lock();
  30.                 try{
  31.                         while(!flag){
  32.                                 condition_con.await();
  33.                         }
  34.                         System.out.println(Thread.currentThread().getName()+"我消费了" + this.name);
  35.                         condition_pro.signal();
  36.                         flag = false;
  37.                         //catch(InterruptedException ie){}
  38.                 }finally{
  39.                         lock.unlock();
  40.                 }        
  41.         }
  42. }                        
  43. class Producer implements Runnable{
  44.         private Resource r;
  45.         Producer(Resource r){
  46.                 this.r = r;
  47.         }
  48.         public void run(){
  49.                 while(true){
  50.                         try{
  51.                                 r.set("商品");
  52.                         }catch(InterruptedException ie){}
  53.                 }
  54.         }
  55. }
  56. class Consumer implements Runnable{
  57.         private Resource r;
  58.         Consumer(Resource r){
  59.                 this.r = r;
  60.         }
  61.         public void run(){
  62.                 while(true){
  63.                         try{
  64.                                 r.out();
  65.                         }catch(InterruptedException ie){}
  66.                 }
  67.         }
  68. }
  69. public class ProducerConsumerTestImproved{
  70.         public static void main(String[] args){
  71.                 Resource r = new Resource();
  72.                 Producer p = new Producer(r);
  73.                 Consumer c = new Consumer(r);
  74.                 Thread t1 = new Thread(p);
  75.                 Thread t2 = new Thread(p);
  76.                 Thread t3 = new Thread(c);
  77.                 Thread t4 = new Thread(c);
  78.                 t1.start();
  79.                 t2.start();
  80.                 t3.start();
  81.                 t4.start();
  82.         }
  83. }
复制代码

24 个回复

倒序浏览
我可是下了血本呀,总共奖励10个黑马币,望麻油门帮忙。
回复 使用道具 举报
刀郎去西藏 发表于 2015-12-29 23:40
我可是下了血本呀,总共奖励10个黑马币,望麻油门帮忙。

奥对了,大家不要用Eclipse编译,用DOS窗口编译才能发现报错
回复 使用道具 举报

回帖奖励 +1

围观,坐等大神出现
回复 使用道具 举报

回帖奖励 +1

坐等啊~~~~~
回复 使用道具 举报
csc 中级黑马 2015-12-30 12:56:33
地板
前排支持
回复 使用道具 举报
哇,坐等大神
回复 使用道具 举报
bowllboy 来自手机 中级黑马 2015-12-30 18:03:39
8#

回帖奖励 +1

我是看你名字进来的
回复 使用道具 举报
lts0616 中级黑马 2015-12-30 19:23:48
9#
赞一下!
回复 使用道具 举报
aymore 中级黑马 2015-12-30 20:11:44
10#

回帖奖励 +1

哇,坐等大神
回复 使用道具 举报

回帖奖励 +1

坐等大神
回复 使用道具 举报
bowllboy 发表于 2015-12-30 18:03
我是看你名字进来的

我的名字怎么了?
回复 使用道具 举报

回帖奖励 +1

前来学习的!
回复 使用道具 举报

回帖奖励 +1

表示还看不懂
回复 使用道具 举报
大神在哪里?
回复 使用道具 举报

回复 使用道具 举报

一起坐等大神
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报

回帖奖励 +1

之前听老师说过这个问题,但是忘了,等大神解答
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马