2016-05-04 9 views
0

Ich benutze Hazelcast Imap-Schnittstelle, um Elemente auf eine verteilte Weise zu sperren. Statt Element in Karte zu setzen, rufe ich nur Lock-Methode, die funktionieren scheinen, aber ich weiß es nicht Wie kann man abfragen, welche Objekte derzeit gesperrt sind, da Elemente in der Map nicht verfügbar sind. Gibt es eine Möglichkeit, Haselpile über gesperrte Schlüssel abzufragen? Hier ist der Beispielcode: public void testMap_DistributedLock() { final Config hazelcastConfig = new Config(); int NummerOfRecords = 100;So ermitteln Sie, welche Schlüssel gesperrt sind Sperre mit Hazelcast Imap

final HazelcastInstance instance1 = Hazelcast.newHazelcastInstance(hazelcastConfig); 
    //monitorCluster(instance1); 

    IMap<Integer, Integer> myMap = instance1.getMap("myMap"); 
    System.err.println("starting lock"); 
    int index = 0; 
    while(index<numberOfRecords){ 
     myMap.lock(index++); 
    } 
    System.err.println("After locking index is: " +index); 
    System.err.println("myMap.size()=" + myMap.size()); 
} 

und Ausgabe lautet:

starting lock 
After locking index is: 100 
myMap.size()=0 

PS: Mit Java7 mit Hazelcast 3.6

Antwort

2

Es gibt keine API wie IMap :: getLocks aber man kann durch alle bekannten Schlösser mit IMap iterieren :: isLocked und sammelt Schlüssel, die noch gesperrt sind. Wenn Sie wirklich eine getLocks-Methode möchten, gehen Sie bitte vor und legen Sie eine Feature-Anfrage auf github ab.

Verwandte Themen