Wie sperrt Reentrantlock ein bestimmtes Objekt?
扔个三星炸死你
扔个三星炸死你 2017-06-12 09:25:57
0
1
909

Wenn ich ein Array-Objekt der Länge 10:

habe
Object[] 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?

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

Antworte allen(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();
}
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage