From eff7aeaf5caa085504603fde609f815009849385 Mon Sep 17 00:00:00 2001 From: Viktor Klang Date: Wed, 8 Sep 2010 17:49:19 +0200 Subject: [PATCH] Optimization of Index --- akka-actor/src/main/scala/actor/ActorRegistry.scala | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/akka-actor/src/main/scala/actor/ActorRegistry.scala b/akka-actor/src/main/scala/actor/ActorRegistry.scala index 90ecdc30d5..1a52b1efc0 100644 --- a/akka-actor/src/main/scala/actor/ActorRegistry.scala +++ b/akka-actor/src/main/scala/actor/ActorRegistry.scala @@ -157,6 +157,7 @@ class Index[K <: AnyRef,V <: AnyRef : Manifest] { private val Naught = Array[V]() //Nil for Arrays private val container = new ConcurrentHashMap[K, JSet[V]] + private val emptySet = new ConcurrentSkipListSet[V] def put(key: K, value: V) { @@ -213,9 +214,10 @@ class Index[K <: AnyRef,V <: AnyRef : Manifest] { val set = container get key if (set ne null) { set.synchronized { - set remove value - if (set.isEmpty) - container remove key + if (set.remove(value)) { + if (set.isEmpty) + container.remove(key,emptySet) + } } } }