Use a copy on write array list for sliding window counter
Change-Id: I80f957c55e49b94e6904630ece031c1dbc8ad356
diff --git a/utils/misc/src/main/java/org/onlab/util/SlidingWindowCounter.java b/utils/misc/src/main/java/org/onlab/util/SlidingWindowCounter.java
index d68cd74..f3b10ec 100644
--- a/utils/misc/src/main/java/org/onlab/util/SlidingWindowCounter.java
+++ b/utils/misc/src/main/java/org/onlab/util/SlidingWindowCounter.java
@@ -15,8 +15,8 @@
*/
package org.onlab.util;
-import java.util.ArrayList;
import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicLong;
@@ -60,7 +60,7 @@
this.headSlot = 0;
// Initialize each item in the list to an AtomicLong of 0
- this.counters = new ArrayList<>();
+ this.counters = new CopyOnWriteArrayList<>();
this.counters.add(new AtomicLong());
background = newSingleThreadScheduledExecutor(groupedThreads("SlidingWindowCounter", "bg-%d"));