Rumah > Soal Jawab > teks badan
Jika saya mempunyai objek tatasusunan dengan panjang 10:
Object[] arr=new Object[10];
Akses kepada setiap objek adalah saling eksklusif, tetapi akses antara berbilang objek boleh serentak.
Kemudian menggunakan disegerakkan anda boleh melakukan ini:
synchoronized(arr[i]){
//...
}
Saya ingin bertanya, bagaimana untuk melaksanakan kunci sedemikian jika menggunakan reentrantlock?
Nota: Adakah saya perlu mencipta 10 tatasusunan Kunci pada masa yang sama untuk senario penggunaan ini? Lock[] lockList=new ReentrantLock[10]
if(lockList[i].trylock())[
//
}
Adakah ini?
代言2017-06-12 09:27:57
Kunci permulaan:
Lock[] lockList = new ReentrantLock[10];
for (int i = 0; i < 10; i ++) {
lockList[i] = new ReentrantLock();
}
Apabila penguncian diperlukan:
lockList[i].lock();
try {
...
} finally {
lockList[i].unlock();
}