このようなコヒーレンスロック-ロック解除メカニズムに関するテストサンプルがあります。
public class Test {
public static void main(String[] args) throws InterruptedException, IOException, IllegalArgumentException, IllegalAccessException {
Trt test=new Trt();
test.lock();
Thread a=new Thread(test);
a.start();
}
public static class Trt implements Runnable{
NamedCache cache=null;
@Override
public void run() {
System.out.println(cache.unlock("asd"));
}
public void lock(){
cache= CacheFactory.getCache(Globals.REGISTRY_CACHE_NAME);
System.out.println(cache.lock("asd"));
}
}
}
したがって、結果は次のようになります。
true
false
私が期待している結果は次のとおりです。
true
true
ただし、「テスト」という項目は1つしかなく、すべて使用していて、キャッシュインスタンスは1つしかありません。したがって、キャッシュの所有者はそのキャッシュインスタンスです。
なぜそれを閉じて最終的に戻ることができないfalse
のですか?
ありがとう
アリ