diff --git a/src/main/java/de/tudbut/tools/Lock.java b/src/main/java/de/tudbut/tools/Lock.java index 71804c7..c0d8a96 100644 --- a/src/main/java/de/tudbut/tools/Lock.java +++ b/src/main/java/de/tudbut/tools/Lock.java @@ -60,16 +60,17 @@ public class Lock extends SimpleLock { return; do { - if(!isTimed) { + if(isTimed) { + long wt = timeLeft0(); + if(wt == 0) { + unlock(); + return; + } + super.waitHere(wt); + } + else { super.waitHere(); - continue; } - long wt = timeLeft0(); - if(wt == 0) { - unlock(); - return; - } - super.waitHere(wt); } while(relocking); } @@ -87,23 +88,23 @@ public class Lock extends SimpleLock { do { long sectionOffset = System.currentTimeMillis() - start; - if(!isTimed) { + if(isTimed) { + long wt = timeLeft0(); + if(wt == 0) { + unlock(); + return; + } + wt = Math.min(wt, timeout - sectionOffset); + if(wt <= 0) + return; + super.waitHere(wt); + } + else { long wt = timeout - sectionOffset; if(wt <= 0) return; super.waitHere(wt); - continue; } - - long wt = timeLeft0(); - if(wt == 0) { - unlock(); - return; - } - wt = Math.min(wt, timeout - sectionOffset); - if(wt <= 0) - return; - super.waitHere(wt); } while(relocking); }