From d1f23220e561b248963dd9c442d182807f1f31d2 Mon Sep 17 00:00:00 2001 From: nathan Date: Wed, 3 Jun 2015 11:27:30 +0200 Subject: [PATCH] Cleaned up locks --- .../common/AbstractConcurrentSet.java | 23 ++++++++----------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/src/main/java/dorkbox/util/messagebus/common/AbstractConcurrentSet.java b/src/main/java/dorkbox/util/messagebus/common/AbstractConcurrentSet.java index 2b2d6cd..1d084fb 100644 --- a/src/main/java/dorkbox/util/messagebus/common/AbstractConcurrentSet.java +++ b/src/main/java/dorkbox/util/messagebus/common/AbstractConcurrentSet.java @@ -6,11 +6,6 @@ import java.util.Set; import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.locks.StampedLock; - -abstract class pad extends item { - volatile long z0, z1, z2, z4, z5, z6 = 7L; -} - /** * This data structure is optimized for non-blocking reads even when write operations occur. * Running read iterators will not be affected by add operations since writes always insert at the head of the @@ -45,32 +40,34 @@ public abstract class AbstractConcurrentSet implements Set { } boolean changed; - long stamp = this.lock.readLock(); + final StampedLock lock = this.lock; + long stamp = lock.readLock(); if (this.entries.containsKey(element)) { - this.lock.unlockRead(stamp); + lock.unlockRead(stamp); return false; } long origStamp = stamp; - if ((stamp = this.lock.tryConvertToWriteLock(stamp)) == 0) { - this.lock.unlockRead(origStamp); - stamp = this.lock.writeLock(); + if ((stamp = lock.tryConvertToWriteLock(stamp)) == 0) { + lock.unlockRead(origStamp); + stamp = lock.writeLock(); } changed = insert(element); - this.lock.unlock(stamp); + lock.unlock(stamp); return changed; } @Override public boolean contains(Object element) { - long stamp = this.lock.readLock(); + final StampedLock lock = this.lock; + long stamp = lock.readLock(); ISetEntry entry = this.entries.get(element); - this.lock.unlockRead(stamp); + lock.unlockRead(stamp); return entry != null && entry.getValue() != null; }