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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

关于一个锁里面的多组监视器该怎么理解?我的理解是哪个线程的run里同步的等待,就是哪个线程的监视器,这么理解对吗

5 个回复

倒序浏览
监视器作用在同一把锁上,同一个线上有多个监视器,有一个监视器控制等待,另外几个具体控制具体唤醒的线程
回复 使用道具 举报 1 0
旭辉lin 发表于 2014-9-6 21:26
监视器作用在同一把锁上,同一个线上有多个监视器,有一个监视器控制等待,另外几个具体控制具体唤醒的线程 ...

光看前一句不看后一句吗,再看看后一句,监视器监视哪个线程,该怎么理解,{:2_30:}
回复 使用道具 举报
  1. class Resource {
  2.         private String name;
  3.         private int count = 1;
  4.         private boolean flag = false;
  5.         Lock lock = new ReentrantLock();
  6.         Condition producer_con = lock.newCondition();// eclipse提示出故障,如果先敲Condition
  7.                                                                                                         // producer_con=然后出提示
  8.         Condition consumer_con = lock.newCondition();

  9.         public void setName(String name) {//生产线
  10.                 lock.lock();
  11.                 try {
  12.                         while (flag) {
  13.                                 try {
  14.                                         producer_con.await();//生产等待
  15.                                 } catch (InterruptedException e) {
  16.                                         e.printStackTrace();
  17.                                 }
  18.                         }
  19.                         this.name = name + count;
  20.                         count++;
  21.                         System.out.println(Thread.currentThread().getName() + "生产者"
  22.                                         + this.name);
  23.                         flag = true;
  24.                         consumer_con.signal();//唤醒消费
  25.                 } finally {
  26.                         lock.unlock();
  27.                 }

  28.         }

  29.         public void getName() {//消费线
  30.                 lock.lock();
  31.                 try {
  32.                         while (!flag) {
  33.                                 try {
  34.                                         consumer_con.await();//消费等待
  35.                                 } catch (InterruptedException e) {
  36.                                         e.printStackTrace();
  37.                                 }
  38.                         }
  39.                         System.out.println(Thread.currentThread().getName()
  40.                                         + "消费者------------" + this.name);
  41.                         flag = false;
  42.                         producer_con.signal();//唤醒生产
  43.                 } finally {
  44.                         lock.unlock();
  45.                 }

  46.         }
  47. }
复制代码
回复 使用道具 举报 1 0

哪个线程的run里同步的等待,就是哪个线程的监视器,这么理解对不对?
回复 使用道具 举报 1 0
嗖都是门...
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马