Bagaimanakah reentrantlock mengunci objek tertentu?
扔个三星炸死你
扔个三星炸死你 2017-06-12 09:25:57
0
1
906

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?

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

membalas semua(1)
代言

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();
}
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan