diff --git a/src/main/java/org/apache/horn/bsp/SmallLayeredNeuralNetworkTrainer.java b/src/main/java/org/apache/horn/bsp/SmallLayeredNeuralNetworkTrainer.java
index 002a9e5..b4657f0 100644
--- a/src/main/java/org/apache/horn/bsp/SmallLayeredNeuralNetworkTrainer.java
+++ b/src/main/java/org/apache/horn/bsp/SmallLayeredNeuralNetworkTrainer.java
@@ -32,6 +32,7 @@
 import org.mortbay.log.Log;
 
 import java.io.IOException;
+import java.util.concurrent.atomic.AtomicBoolean;
 
 /**
  * The trainer that train the {@link SmallLayeredNeuralNetwork} based on BSP
@@ -53,7 +54,7 @@
   private long convergenceCheckInterval;
   private long iterations;
   private long maxIterations;
-  private boolean isConverge;
+  private AtomicBoolean isConverge;
 
   private String modelPath;
 
@@ -79,7 +80,7 @@
     if (isMaster(peer)) {
       Log.info("Begin to train");
     }
-    this.isConverge = false;
+    this.isConverge = new AtomicBoolean(false);
     this.conf = peer.getConfiguration();
     this.iterations = 0;
     this.modelPath = conf.get("modelPath");
@@ -128,7 +129,7 @@
         mergeUpdates(peer);
       }
       peer.sync();
-      if (this.isConverge) {
+      if (this.isConverge.get()) {
         break;
       }
     }
@@ -150,9 +151,9 @@
       DoubleMatrix[] preWeightUpdates = inMessage.getPrevMatrices();
       this.inMemoryModel.setWeightMatrices(newWeights);
       this.inMemoryModel.setPrevWeightMatrices(preWeightUpdates);
-      this.isConverge = inMessage.isConverge();
+      this.isConverge.set(inMessage.isConverge());
       // check converge
-      if (isConverge) {
+      if (isConverge.get()) {
         return;
       }
     }
@@ -205,7 +206,7 @@
     int numMessages = peer.getNumCurrentMessages();
     boolean isConverge = false;
     if (numMessages == 0) { // converges
-      this.isConverge = true;
+      this.isConverge.set(true);
       return;
     }
 
