为了账号安全,请及时绑定邮箱和手机立即绑定

reentrantlock如何锁住某个特定的对象?

reentrantlock如何锁住某个特定的对象?

小怪兽爱吃肉 2019-03-01 10:58:46
如果我有一个长度为10个数组对象: Object[] arr=new Object[10]; 每个对象的访问都是互斥的,但是多个对象之间访问是可以并发的。那么使用synchonized可以这样: synchoronized(arr[i]){ //... } 我向问,如果使用 reentrantlock如何实现这样的锁? 备注:这样的使用场景我是否需要同时建立10个Lock数组? Lock[] lockList=new ReentrantLock[10] if(lockList[i].trylock())[ // } 这样?
查看完整描述

1 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

初始化锁:

Lock[] lockList = new ReentrantLock[10];
for (int i = 0; i < 10; i ++) {
    lockList[i] = new ReentrantLock();
}

需要加锁时:

lockList[i].lock();
try {
    ...
} finally {
    lockList[i].unlock();
}
查看完整回答
反对 回复 2019-03-01
  • 1 回答
  • 0 关注
  • 3065 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信