当前位置:编程学习 > JAVA >>

我在用Java的JDK1.5版本后的锁对象时出现问题了,大神帮帮我

import java.util.concurrent.locks.*;

class Resource
{
 private String name;
 private int count=1;
 boolean flag=false;
 Lock lock=new ReentrantLock();
 Condition producer_con=lock.newCondition();
 Condition consumer_con=lock.newCondition();
 public  void set(String name){
  lock.lock();
  try{
  while(flag)
  //try{wait();}catch(InterruptedException e){}
  try{producer_con.await();}catch(InterruptedException e){}
  this.name=name+count;
  count++;
  System.out.println(Thread.currentThread().getName()+"..生产者.."+this.name);
  flag=true;
  consumer_con.signal();}
  finally{
   lock.unlock();
  }
 }
 public  void out(){
  lock.lock();
  try{
  while(!flag)
  //try{wait();}catch(InterruptedException e){}
  try{consumer_con.await();}catch(InterruptedException e){}
  System.out.println(Thread.currentThread().getName()+"..消费者.........."+this.name);
  flag=false;
  producer_con.signal();}
  finally{
   lock.unlock();
  }

 }
}
class Producer implements Runnable
{
 Resource r;
 Producer(Resource r){
  this.r=r;
 }
 public void run(){
 while(true){
  r.set("烤鸭");
 }
 }
}

class Consumer implements Runnable
{
 Resource r;
 Consumer(Resource r){
  this.r=r;
 }
 public void run(){
 while(true){
  r.out();
 }
 }
}

class ProducerConsumerDemo 
{
 public static void main(String[] args) 
 {
  Resource r=new Resource();
  Producer pro=new Producer(r);
  Consumer con=new Consumer(r);
  Thread t0=new Thread(pro);
  Thread t1=new Thread(pro);
  Thread t2=new Thread(con);
  Thread t3=new Thread(con);
  t0.start();
  t1.start();
  t2.start();
  t3.start();
 }
}
上面程序编译后会出现如下报错:F:\javatest>javac ProducerConsumerDemo.java
ProducerConsumerDemo.java:9: 错误: 不兼容的类型
        Lock lock=new ReentrantLock();
                  ^
  需要: Lock
  找到:    ReentrantLock
ProducerConsumerDemo.java:10: 错误: 找不到符号
        Condition producer_con=lock.newCondition();
                                   ^
  符号:   方法 newCondition()
  位置: 类型为Lock的变量 lock
ProducerConsumerDemo.java:11: 错误: 找不到符号
        Condition consumer_con=lock.newCondition();
                                   ^
  符号:   方法 newCondition()
  位置: 类型为Lock的变量 lock
ProducerConsumerDemo.java:13: 错误: 找不到符号
                lock.lock();
                    ^
  符号:   方法 lock()
  位置: 类型为Lock的变量 lock
ProducerConsumerDemo.java:24: 错误: 找不到符号
                        lock.unlock();
                            ^
  符号:   方法 unlock()
  位置: 类型为Lock的变量 lock
ProducerConsumerDemo.java:28: 错误: 找不到符号
                lock.lock();
                    ^
  符号:   方法 lock()
  位置: 类型为Lock的变量 lock
ProducerConsumerDemo.java:37: 错误: 找不到符号
                        lock.unlock();
                            ^
  符号:   方法 unlock()
  位置: 类型为Lock的变量 lock
7 个错误

Java JDK 对象 --------------------编程问答-------------------- 能加上代码高亮不,看着狠费劲。代码都没问题,在我这用黑窗口运行没有任何错误,估计是你的jdk的问题,看看你的jdk路径是不是指向的1.5版本的。。。。。。 --------------------编程问答-------------------- 1.7都出来了。。。试试1.7吧。。。
或者1.6也行,检查一下JDK路径. --------------------编程问答-------------------- 我就是用的jdk1.7啊,这个锁对象是JDK1.5以后出现的,我的JDK1.7怎么运行不了它呢 --------------------编程问答--------------------
引用 3 楼 u010178058 的回复:
我就是用的jdk1.7啊,这个锁对象是JDK1.5以后出现的,我的JDK1.7怎么运行不了它呢
换1.6的试试
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,