You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by do...@apache.org on 2009/11/25 20:46:49 UTC
svn commit: r884238 -
/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/cache/UtilCache.java
Author: doogie
Date: Wed Nov 25 19:46:49 2009
New Revision: 884238
URL: http://svn.apache.org/viewvc?rev=884238&view=rev
Log:
Remove synchronization for listeners, switching to CopyOnWriteArraySet.
Modified:
ofbiz/trunk/framework/base/src/org/ofbiz/base/util/cache/UtilCache.java
Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/cache/UtilCache.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/cache/UtilCache.java?rev=884238&r1=884237&r2=884238&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/cache/UtilCache.java (original)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/cache/UtilCache.java Wed Nov 25 19:46:49 2009
@@ -28,6 +28,7 @@
import java.util.ResourceBundle;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArraySet;
import javolution.util.FastList;
import javolution.util.FastSet;
@@ -97,7 +98,7 @@
private String fileStore = "runtime/data/utilcache";
/** The set of listeners to receive notifcations when items are modidfied(either delibrately or because they were expired). */
- protected Set<CacheListener<K, V>> listeners = FastSet.newInstance();
+ protected Set<CacheListener<K, V>> listeners = new CopyOnWriteArraySet<CacheListener<K, V>>();
/** Constructor which specifies the cacheName as well as the maxSize, expireTime and useSoftReference.
* The passed maxSize, expireTime and useSoftReference will be overridden by values from cache.properties if found.
@@ -549,43 +550,33 @@
/** Send a key addition event to all registered listeners */
protected void noteAddition(K key, V newValue) {
- synchronized (listeners) {
- for (CacheListener<K, V> listener: listeners) {
- listener.noteKeyAddition(this, key, newValue);
- }
+ for (CacheListener<K, V> listener: listeners) {
+ listener.noteKeyAddition(this, key, newValue);
}
}
/** Send a key removal event to all registered listeners */
protected void noteRemoval(K key, V oldValue) {
- synchronized (listeners) {
- for (CacheListener<K, V> listener: listeners) {
- listener.noteKeyRemoval(this, key, oldValue);
- }
+ for (CacheListener<K, V> listener: listeners) {
+ listener.noteKeyRemoval(this, key, oldValue);
}
}
/** Send a key update event to all registered listeners */
protected void noteUpdate(K key, V newValue, V oldValue) {
- synchronized (listeners) {
- for (CacheListener<K, V> listener: listeners) {
- listener.noteKeyUpdate(this, key, newValue, oldValue);
- }
+ for (CacheListener<K, V> listener: listeners) {
+ listener.noteKeyUpdate(this, key, newValue, oldValue);
}
}
/** Adds an event listener for key removals */
public void addListener(CacheListener<K, V> listener) {
- synchronized (listeners) {
- listeners.add(listener);
- }
+ listeners.add(listener);
}
/** Removes an event listener for key removals */
public void removeListener(CacheListener<K, V> listener) {
- synchronized (listeners) {
- listeners.remove(listener);
- }
+ listeners.remove(listener);
}
/** Clears all expired cache entries from all caches */