当前位置: 代码迷 >> J2SE >> 重入锁ReentrantLock() 创建报错 咋回事?
  详细解决方案

重入锁ReentrantLock() 创建报错 咋回事?

热度:74   发布时间:2016-04-24 01:04:03.0
重入锁ReentrantLock() 创建报错 怎么回事??
Java code
import java.util.concurrent.locks.*;public class ReentrantLock  implements Runnable{    private int num = 0;    private Lock lock = new ReentrantLock();//创建重入锁对象。这里怎么报错啊???    @Override    public void run(){        lock.lock();    //打开锁        try{            for(int i = 0; i < 5; i++){                try{                    Thread.sleep(100);                }catch (InterruptedException e){                    e.printStackTrace();                }                System.out.println(Thread.currentThread().getName() + ":" + num++);            }        }finally{            lock.unlock();//释放锁        }    }    public static void main(String[] args) {        ReentrantLock run = new ReentrantLock();        Thread thread1 = new Thread(run);        Thread thread2 = new Thread(run);        thread1.start();        thread2.start();    }}


private Lock lock = new ReentrantLock(); 这句 new ReentrantLock() 为什么不能通过编译??



------解决方案--------------------
ReentrantLock 都被你覆盖了,还能是lock吗?
改下名字
public class ReentrantLockRunnable implements Runnable{
private int num = 0;
private Lock lock = new ReentrantLock();//创建重入锁对象。这里怎么报错啊???
即使成功了,也会栈溢出。