Use copy-on-write array list instead of custom synchronization.
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Fri, 22 May 2009 04:51:48 +0000 (06:51 +0200)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Fri, 22 May 2009 04:51:48 +0000 (06:51 +0200)
src/net/pterodactylus/util/event/ListenerManager.java

index 333e1eb..26bb3c5 100644 (file)
@@ -19,9 +19,9 @@
 
 package net.pterodactylus.util.event;
 
-import java.util.ArrayList;
 import java.util.EventListener;
 import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 /**
  * Helper class for {@link EventListener} management.
@@ -30,10 +30,10 @@ import java.util.List;
  *            The type of the event listener
  * @author David Roden &lt;droden@gmail.com&gt;
  */
-public class ListenerSupport<L extends EventListener> {
+public class ListenerManager<L extends EventListener> {
 
        /** The list of registered listeners. */
-       private final List<L> listeners = new ArrayList<L>();
+       private final List<L> listeners = new CopyOnWriteArrayList<L>();
 
        /**
         * Adds a listener to the list of registered listeners.
@@ -68,9 +68,7 @@ public class ListenerSupport<L extends EventListener> {
         * @return The list of all listeners
         */
        protected List<L> getListeners() {
-               synchronized (listeners) {
-                       return new ArrayList<L>(listeners);
-               }
+               return listeners;
        }
 
 }