发布网友 发布时间:2022-04-23 08:57
共5个回答
热心网友 时间:2022-06-18 17:34
今天遇到这个问题 使用ReentrantLock自定义 可以参考一下
1、当执行B的时候锁住,无法执行A
但是当执行A的时候不影响B
热心网友 时间:2022-06-18 17:34
按正常的线程同步方式处理,不过在A获得锁后马上释放掉就行了。这样B被A影响的机率非常小,为保险可以在A释放掉锁后通知所有被锁对象就行了。追问具体代码写出来看看!追答把遍历放到外边
public void B()
{
synchronized(对象锁)
{
}
//遍历
}
热心网友 时间:2022-06-18 17:35
java Lock类
热心网友 时间:2022-06-18 17:35
使用 synchronized关键字即可热心网友 时间:2022-06-18 17:36
synchronized(this) 就可以了追问你没听清我的描述追答public Connection getMyCon() {
for (MyCon my : pool) {
synchronized(this){
if (!my.isUsed()) {
my.use();
System.out.println("获取第" + my.i + "条连接");
return my.getConn();
}
}
}
return null;
}
我自己类中的一个方法,可以NEW很多线程去执行这个类的这个方法,不过第一个线程执行这个方法的时候,别的线程就只能等待,只有释放这个索以后,别的线程才能进行强索