线程lock(this)的问题

Anndumbly 2009-07-23 09:42:14
下面一段代码在lock(this)处编译有错误,是怎么回事啊
还有请问一下这段代码当调用test方法是>10时是否会引起死锁?

public class test {
public void test1(int i){
lock(this){
if(i>10){
i--;
test1(i);
}
}
}
}
...全文
103 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Anndumbly 2009-07-23
  • 打赏
  • 举报
回复
向各位高人求助
wst0350 2009-07-23
  • 打赏
  • 举报
回复
不懂,关注中
Anndumbly 2009-07-23
  • 打赏
  • 举报
回复
将lock换成synchronized吗?就是说没有lock(this)这种用法吗?
那如果换成synchronized以上代码是否会发生死锁呢?
非典型射手 2009-07-23
  • 打赏
  • 举报
回复
synchronized
Anndumbly 2009-07-23
  • 打赏
  • 举报
回复
这样是没错,是不是在方法内写synchronized(this){}和this.lock.lock(); 效果是一样的啊?
那这样写了,那这段代码当调用test方法是>10时是否会引起死锁?
jackz_2007 2009-07-23
  • 打赏
  • 举报
回复
这样试下

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);
}
//}
}
}

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧