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 f0388b1a4dad6f254b7338c7cc93b5f391331f0d..4970231dc0549c36bfcd3d13321a86cb8998453a 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 ca0986656ecaae50602578862849e06038e81962..4cd06de9284385014c09af181f38cc47201daa83 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 eda329215fa4b2420105a2b1d72063b963d452ff..e1260e369993374a5a9812731862a001ca045ceb 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";