Add thread-safety support to the Hazelcast-based notification framework.

Change-Id: I606f6ccb417c733903b7d8305d8d23b434417c2e
diff --git a/src/main/java/net/onrc/onos/datagrid/HazelcastEventChannel.java b/src/main/java/net/onrc/onos/datagrid/HazelcastEventChannel.java
index b453139..7739e83 100644
--- a/src/main/java/net/onrc/onos/datagrid/HazelcastEventChannel.java
+++ b/src/main/java/net/onrc/onos/datagrid/HazelcastEventChannel.java
@@ -1,12 +1,11 @@
 package net.onrc.onos.datagrid;
 
-import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.LinkedList;
-import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 import com.esotericsoftware.kryo.Kryo;
 import com.esotericsoftware.kryo.io.Input;
@@ -27,8 +26,9 @@
     private Class<?> typeK;			// The class type of the key
     private Class<?> typeV;			// The class type of the value
     private IMap<K, byte[]> channelMap = null;	// The Hazelcast channel map
-    private List<IEventChannelListener<K, V>> listeners = // Channel listeners
-	new ArrayList<IEventChannelListener<K, V>>();
+    // The channel listeners
+    private CopyOnWriteArrayList<IEventChannelListener<K, V>> listeners =
+	new CopyOnWriteArrayList<IEventChannelListener<K, V>>();
 
     // The map entry listener
     private MapEntryListener mapEntryListener = new MapEntryListener<K>();