Heim > Fragen und Antworten > Hauptteil
Wenn ich ein Array-Objekt der Länge 10:
habeObject[] arr=new Object[10];
Der Zugriff auf jedes Objekt schließt sich gegenseitig aus, der Zugriff zwischen mehreren Objekten kann jedoch gleichzeitig erfolgen.
Dann können Sie mit synchonized Folgendes tun:
synchoronized(arr[i]){
//...
}
Ich würde gerne fragen, wie man eine solche Sperre implementiert, wenn man Reentrantlock verwendet?
Hinweis: Muss ich für dieses Nutzungsszenario 10 Lock-Arrays gleichzeitig erstellen? Lock[] lockList=new ReentrantLock[10]
if(lockList[i].trylock())[
//
}
Ist das so?
代言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();
}