diff --git a/src/dorkbox/messageBus/common/ClassTree.java b/src/dorkbox/messageBus/common/ClassTree.java index 8b60f23..3bec05d 100644 --- a/src/dorkbox/messageBus/common/ClassTree.java +++ b/src/dorkbox/messageBus/common/ClassTree.java @@ -46,18 +46,20 @@ public class ClassTree { } }; + private static AtomicInteger valueId = new AtomicInteger(Integer.MIN_VALUE); + private static final FastThreadLocal valueCache = new FastThreadLocal() { @Override public MultiClass initialValue() { - return null; + return new MultiClass(valueId.getAndIncrement()); } }; private AtomicReference children = new AtomicReference(); private AtomicReference value = new AtomicReference(); - private AtomicInteger valueId = new AtomicInteger(Integer.MIN_VALUE); + @SuppressWarnings("unchecked") @@ -182,9 +184,6 @@ public class ClassTree { MultiClass value = leaf.value.get(); if (value == null) { MultiClass multiClass = valueCache.get(); - if (multiClass == null) { - multiClass = new MultiClass(valueId.getAndIncrement()); - } final boolean success = leaf.value.compareAndSet(null, multiClass); if (success) {