下面一段代码在lock(this)处编译有错误,是怎么回事啊
还有请问一下这段代码当调用test方法是>10时是否会引起死锁?public class test {
public void test1(int i){
lock(this){
if(i>10){
i--;
test1(i);
}
}
}
}

解决方案 »

  1.   

    将lock换成synchronized吗?就是说没有lock(this)这种用法吗?
    那如果换成synchronized以上代码是否会发生死锁呢?
      

  2.   

    这样试下import java.util.concurrent.locks.Lock;
    import java.util.concurrent.locks.ReentrantLock;
    public class test { 
    private final Lock lock = new ReentrantLock();
    public void test1(int i){ 
    this.lock.lock(); //l.lock(){ 
    if(i>10){ 
    i--; 
    test1(i); 

    //}  

    }
      

  3.   

    这样是没错,是不是在方法内写synchronized(this){}和this.lock.lock(); 效果是一样的啊?
    那这样写了,那这段代码当调用test方法是>10时是否会引起死锁?