java - reentrantlock如何鎖住某個特定的物件?
扔个三星炸死你
扔个三星炸死你 2017-06-12 09:25:57
0
1
865

如果我有一個長度為10個陣列物件:

Object[] arr=new Object[10];

每個物件的存取都是互斥的,但是多個物件之間存取是可以並發的。
那麼使用synchonized可以這樣:

synchoronized(arr[i]){
    //...
}

我向問,如果使用 reentrantlock如何實現這樣的鎖?

備註:這樣的使用場景我是否需要同時建立10個Lock陣列? Lock[] lockList=new ReentrantLock[10]

if(lockList[i].trylock())[
    //
}

這樣?

扔个三星炸死你
扔个三星炸死你

全部回覆(1)
代言

初始化鎖定:

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

需要加鎖時:

lockList[i].lock();
try {
    ...
} finally {
    lockList[i].unlock();
}
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!