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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张盼 中级黑马   /  2014-5-18 22:00  /  1011 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张盼 于 2014-5-18 22:38 编辑

class Resource
{
private String name;
private int count = 1;
private boolean flag = false;

private Lock lock = new ReentrantLock();
private Condition condition =lock.newCondition();

public void set(String name)throws InterruptedException
{
  lock.lock();
  try
  {
   while(flag)
   {
    condition.await();
   }
   this.name = name+"---"+count++;
   System.out.println(Thread.currentThread().getName()+" 生产者-- "+this.name);
   flag = true;
   condition.signal();
  }
  finally
  {
   lock.unlock();
  }
}
public synchronized void out()
{
  while(!flag)
  {
   try
   {
    this.wait();
   }
   catch(Exception e)
   {
   }
  }
  System.out.println(Thread.currentThread().getName()+" 消费者====== "+this.name);
  flag = false;
  this.notifyAll();
}
}
class Producer implements Runnable
{
private Resource res;
Producer(Resource res)
{
  this.res = res;
}
public void run()
{
  while(true)
  {
   res.set("+商品+");
  }
}
}
class Consumer implements Runnable
{
private Resource res;
Consumer(Resource res)
{
  this.res = res;
}
public void run()
{
  while(true)
  {
   res.out();
  }
}
}
class ProducerConsumerDemo2
{
public static void main(String[]args)
{
  Resource r = new Resource();
  
  Producer pro = new Producer(r);
  Consumer con = new Consumer(r);
  
  Thread t1 = new Thread(pro);  
  Thread t2 = new Thread(pro);  
  Thread t3 = new Thread(con);  
  Thread t4 = new Thread(con);
  t1.start();
  t2.start();
  t3.start();
  t4.start();  
}
}

这个程序哪里错了,为什么视频上这样写可以运行?

错误提示:

ProducerConsumerDemo2.java:7: 找不到符号
符号: 类 Lock
位置: 类 Resource
        private Lock lock = new ReentrantLock();
                ^
ProducerConsumerDemo2.java:8: 找不到符号
符号: 类 Condition
位置: 类 Resource
        private Condition condition =lock.newCondition();
                ^
ProducerConsumerDemo2.java:7: 找不到符号
符号: 类 ReentrantLock
位置: 类 Resource
        private Lock lock = new ReentrantLock();
                                ^

2 个回复

倒序浏览
你没有导包,需要import java.util.concurrent.locks.*;
回复 使用道具 举报
zhrnghgwsws 发表于 2014-5-18 22:14
你没有导包,需要import java.util.concurrent.locks.*;

非常感谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马