如果我有一个长度为10个数组对象:
Object[] arr=new Object[10];
每个对象的访问都是互斥的,但是多个对象之间访问是可以并发的。
那么使用synchonized可以这样:
synchoronized(arr[i]){
//...
}
我向问,如果使用 reentrantlock如何实现这样的锁?
备注:这样的使用场景我是否需要同时建立10个Lock数组? Lock[] lockList=new ReentrantLock[10]
if(lockList[i].trylock())[
//
}
这样?
代言2017-06-12 09:27:57
初始化锁:
Lock[] lockList = new ReentrantLock[10];
for (int i = 0; i < 10; i ++) {
lockList[i] = new ReentrantLock();
}
需要加锁时:
lockList[i].lock();
try {
...
} finally {
lockList[i].unlock();
}