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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 蓝枫 中级黑马   /  2014-3-17 14:44  /  1302 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. class Resource
  2. {
  3.         private String name;
  4.         private int count = 1;
  5.         private boolean flag = false;
  6.         private Lock lock = new ReentrantLock();
  7.        
  8.         private Condition co = lock.newCondition();
  9.         public void set(String name) throws InterruptedException
  10.         {
  11.                 lock.lock();
  12.                 try
  13.                 {
  14.                         while(flag)
  15.                         co.await();
  16.                 this.name = name+"---"+count++;
  17.                 System.out.println(Thread.currentThread().getName()+"...生产者..."+this.name);
  18.                 flag = true;
  19.                         co.signalAll();
  20.                 }
  21.                 finally
  22.                 {
  23.                         lock.unlock();
  24.                 }

  25.         }

  26.         public void out()throws InterruptedException
  27.         {
  28.                 lock.lock();
  29.                 try
  30.                 {
  31.                 while(!flag)
  32.                         co.await();
  33.                     System.out.println(Thread.currentThread().getName()+"...........消费者"+this.name);
  34.                     flag = false;
  35.                     co.signalAll();
  36.                 }
  37.                 finally
  38.                 {
  39.                         lock.unlock();
  40.                 }
  41.                
  42.                
  43.         }

  44. }

  45. class Producer implements Runnable
  46. {
  47.         private Resource res;
  48.         Producer(Resource res)
  49.         {
  50.                 this.res=res;
  51.         }
  52.         public void run()
  53.         {
  54.                 while(true)
  55.                 {
  56.                         try
  57.                         {
  58.                                 res.set("+商品+");
  59.                         }
  60.                         catch (InterruptedException e)
  61.                         {
  62.                         }
  63.                        
  64.                 }
  65.         }
  66. }
  67. class Consumer implements Runnable
  68. {
  69.         private Resource res;
  70.         Consumer(Resource res)
  71.         {
  72.                 this.res=res;
  73.         }
  74.         public void run()
  75.         {
  76.                 while(true)
  77.                         try
  78.                         {
  79.                                 res.out();
  80.                         }
  81.                         catch (InterruptedException e)
  82.                         {
  83.                         }
  84.                
  85.                        
  86.                
  87.         }
  88. }


  89. class Demo
  90. {
  91.         public static void main(String[] args)
  92.         {
  93.                 Resource r =new Resource();

  94.                 Producer pro= new Producer(r);
  95.                 Consumer con= new Consumer(r);

  96.                 Thread t1 = new Thread(pro);
  97.         Thread t2 = new Thread(pro);
  98.         Thread t3 = new Thread(con);
  99.         Thread t4 = new Thread(con);

  100.                 t1.start();
  101.                 t2.start();
  102.         t3.start();
  103.                 t4.start();

  104.         }
  105. }
  106. 关于多线程的问题,怎么编译通不过啊!错误在那个地方?
复制代码

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

5 个回复

倒序浏览
没错呀,你的错误提示是什么
回复 使用道具 举报
Dijkstra 发表于 2014-3-17 14:57
没错呀,你的错误提示是什么
  1. lianxi.java:3707: 错误: 找不到符号
  2.         private Lock lock = new ReentrantLock();
  3.                 ^
  4.   符号:   类 Lock
  5.   位置: 类 Resource
  6. lianxi.java:3709: 错误: 找不到符号
  7.         private Condition co = lock.newCondition();
  8.                 ^
  9.   符号:   类 Condition
  10.   位置: 类 Resource
  11. lianxi.java:3707: 错误: 找不到符号
  12.         private Lock lock = new ReentrantLock();
  13.                                 ^
  14.   符号:   类 ReentrantLock
  15.   位置: 类 Resource
  16. 3 个错误
复制代码
回复 使用道具 举报
没引jar包
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

评分

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

查看全部评分

回复 使用道具 举报
没导包吧
回复 使用道具 举报
Dijkstra 发表于 2014-3-17 15:25
没引jar包
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;

谢谢兄弟!找到了!:handshake
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马