如果我有一個長度為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();
}