diff options
author | Valerij Fredriksen <freva@users.noreply.github.com> | 2017-09-26 11:23:38 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-26 11:23:38 +0200 |
commit | 6796195b37f351f843eea4992d2d45b7ba4eb771 (patch) | |
tree | 640ad8ee8f37fd4e20926725d6be4625e9e9e64a | |
parent | 057b7afc924e025c81892707158d2d44d012532e (diff) | |
parent | 843dd99fdd5dcc1154d5693d0058e54b809da60c (diff) |
Merge pull request #3536 from vespa-engine/freva/use-string-as-lock-key
Use String as lock key
-rw-r--r-- | vespajlib/src/main/java/com/yahoo/concurrent/classlock/ClassLocking.java | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/concurrent/classlock/ClassLocking.java b/vespajlib/src/main/java/com/yahoo/concurrent/classlock/ClassLocking.java index e387d259f26..27b020b578d 100644 --- a/vespajlib/src/main/java/com/yahoo/concurrent/classlock/ClassLocking.java +++ b/vespajlib/src/main/java/com/yahoo/concurrent/classlock/ClassLocking.java @@ -8,7 +8,7 @@ import java.util.function.BooleanSupplier; * @author valerijf */ public class ClassLocking { - private final Map<Class<?>, ClassLock> classLocks = new HashMap<>(); + private final Map<String, ClassLock> classLocks = new HashMap<>(); private final Object monitor = new Object(); public ClassLock lock(Class<?> clazz) { @@ -17,7 +17,7 @@ public class ClassLocking { public ClassLock lockWhile(Class<?> clazz, BooleanSupplier interruptCondition) { synchronized (monitor) { - while (classLocks.containsKey(clazz)) { + while (classLocks.containsKey(clazz.getName())) { try { monitor.wait(); } catch (InterruptedException ignored) { @@ -29,15 +29,15 @@ public class ClassLocking { } ClassLock classLock = new ClassLock(this, clazz); - classLocks.put(clazz, classLock); + classLocks.put(clazz.getName(), classLock); return classLock; } } void unlock(Class<?> clazz, ClassLock classLock) { synchronized (monitor) { - if (classLock.equals(classLocks.get(clazz))) { - classLocks.remove(clazz); + if (classLock.equals(classLocks.get(clazz.getName()))) { + classLocks.remove(clazz.getName()); monitor.notifyAll(); } else { throw new IllegalArgumentException("Lock has already been released"); |