summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorValerij Fredriksen <freva@users.noreply.github.com>2017-09-26 11:23:38 +0200
committerGitHub <noreply@github.com>2017-09-26 11:23:38 +0200
commit6796195b37f351f843eea4992d2d45b7ba4eb771 (patch)
tree640ad8ee8f37fd4e20926725d6be4625e9e9e64a
parent057b7afc924e025c81892707158d2d44d012532e (diff)
parent843dd99fdd5dcc1154d5693d0058e54b809da60c (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.java10
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");