From 349d341dadda1e3ba5d7ad7525d03ce1d135233a Mon Sep 17 00:00:00 2001
From: Tim Molter <tim@knowm.org>
Date: Sat, 11 Jul 2015 15:56:56 -0600
Subject: [PATCH] Issue #81 ConcurrentModificationException - I changed the
 type of List in the demos and the exception disappears.

---
 .../xeiam/xchart/demo/charts/realtime/RealtimeChart01.java | 4 ++--
 .../xeiam/xchart/demo/charts/realtime/RealtimeChart02.java | 6 +++---
 .../xeiam/xchart/demo/charts/realtime/RealtimeChart03.java | 7 ++++---
 3 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/realtime/RealtimeChart01.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/realtime/RealtimeChart01.java
index f0388b1a..4970231d 100644
--- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/realtime/RealtimeChart01.java
+++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/realtime/RealtimeChart01.java
@@ -15,10 +15,10 @@
  */
 package com.xeiam.xchart.demo.charts.realtime;
 
-import java.util.ArrayList;
 import java.util.List;
 import java.util.Timer;
 import java.util.TimerTask;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 import javax.swing.JFrame;
 
@@ -102,7 +102,7 @@ public class RealtimeChart01 implements ExampleChart {
 
   private List<Double> getRandomData(int numPoints) {
 
-    List<Double> data = new ArrayList<Double>();
+    List<Double> data = new CopyOnWriteArrayList<Double>();
     for (int i = 0; i < numPoints; i++) {
       data.add(Math.random() * 100);
     }
diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/realtime/RealtimeChart02.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/realtime/RealtimeChart02.java
index ca098665..4cd06de9 100644
--- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/realtime/RealtimeChart02.java
+++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/realtime/RealtimeChart02.java
@@ -15,10 +15,10 @@
  */
 package com.xeiam.xchart.demo.charts.realtime;
 
-import java.util.ArrayList;
 import java.util.List;
 import java.util.Timer;
 import java.util.TimerTask;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 import javax.swing.JFrame;
 
@@ -105,7 +105,7 @@ public class RealtimeChart02 implements ExampleChart {
 
   private List<Double> getRandomData(int numPoints) {
 
-    List<Double> data = new ArrayList<Double>();
+    List<Double> data = new CopyOnWriteArrayList<Double>();
     for (int i = 0; i < numPoints; i++) {
       data.add(Math.random() * 100);
     }
@@ -114,7 +114,7 @@ public class RealtimeChart02 implements ExampleChart {
 
   private List<Integer> getMonotonicallyIncreasingData(int numPoints) {
 
-    List<Integer> data = new ArrayList<Integer>();
+    List<Integer> data = new CopyOnWriteArrayList<Integer>();
     for (int i = 0; i < numPoints; i++) {
       data.add(i);
     }
diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/realtime/RealtimeChart03.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/realtime/RealtimeChart03.java
index eda32921..e1260e36 100644
--- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/realtime/RealtimeChart03.java
+++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/realtime/RealtimeChart03.java
@@ -19,6 +19,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Timer;
 import java.util.TimerTask;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 import javax.swing.JFrame;
 
@@ -37,9 +38,9 @@ import com.xeiam.xchart.demo.charts.ExampleChart;
  */
 public class RealtimeChart03 implements ExampleChart {
 
-  private List<Integer> xData = new ArrayList<Integer>();
-  private List<Double> yData = new ArrayList<Double>();
-  private List<Double> errorBars = new ArrayList<Double>();
+  private List<Integer> xData = new CopyOnWriteArrayList<Integer>();
+  private List<Double> yData = new CopyOnWriteArrayList<Double>();
+  private List<Double> errorBars = new CopyOnWriteArrayList<Double>();
 
   public static final String SERIES_NAME = "series1";
 
-- 
GitLab