diff options
author | Valerij Fredriksen <valerijf@oath.com> | 2017-09-25 15:05:40 +0200 |
---|---|---|
committer | Valerij Fredriksen <valerijf@oath.com> | 2017-09-25 15:05:40 +0200 |
commit | baaf967996c4442c9dd6092e4d969fb27e9e17fb (patch) | |
tree | 72b1e4b0dc27b98bfebc3878af94f5db0ce02854 /vespajlib | |
parent | a7652dde60ebaca99cfebe3b84c7b3db62027bfb (diff) |
Rename to lockWhile, rename arguments
Diffstat (limited to 'vespajlib')
-rw-r--r-- | vespajlib/src/main/java/com/yahoo/concurrent/classlock/ClassLocking.java | 16 |
1 files changed, 8 insertions, 8 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 61e6850ee2e..a6347d9fb14 100644 --- a/vespajlib/src/main/java/com/yahoo/concurrent/classlock/ClassLocking.java +++ b/vespajlib/src/main/java/com/yahoo/concurrent/classlock/ClassLocking.java @@ -2,7 +2,7 @@ package com.yahoo.concurrent.classlock; import java.util.HashMap; import java.util.Map; -import java.util.function.Supplier; +import java.util.function.BooleanSupplier; /** * @author valerijf @@ -11,18 +11,18 @@ public class ClassLocking { private final Map<Class<?>, ClassLock> classLocks = new HashMap<>(); public synchronized ClassLock lock(Class<?> clazz) { - return tryLock(clazz, () -> true); + return lockWhile(clazz, () -> true); } - public synchronized ClassLock tryLock(Class<?> clazz, Supplier<Boolean> continueRetrying) { + public synchronized ClassLock lockWhile(Class<?> clazz, BooleanSupplier interruptCondition) { while(classLocks.containsKey(clazz)) { try { wait(); - } catch (InterruptedException ignored) { - if (! continueRetrying.get()) { - throw new LockInterruptException(); - } - } + } catch (InterruptedException ignored) { } + } + + if (! interruptCondition.getAsBoolean()) { + throw new LockInterruptException(); } ClassLock classLock = new ClassLock(this, clazz); |