synchronization

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/proxy/branches/version-2.0-work@1555239 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/core/src/main/java/org/apache/commons/proxy2/stub/TrainingContext.java b/core/src/main/java/org/apache/commons/proxy2/stub/TrainingContext.java
index dc964d2..c0ad666 100644
--- a/core/src/main/java/org/apache/commons/proxy2/stub/TrainingContext.java
+++ b/core/src/main/java/org/apache/commons/proxy2/stub/TrainingContext.java
@@ -35,7 +35,7 @@
         return TRAINING_CONTEXT.get();
     }
 
-    static TrainingContext join(ProxyFactory proxyFactory)
+    static synchronized TrainingContext join(ProxyFactory proxyFactory)
     {
         final TrainingContext context = new TrainingContext(proxyFactory);
         TRAINING_CONTEXT.set(context);
@@ -58,13 +58,16 @@
 
     void part()
     {
-        if (resume == null)
+        synchronized (TRAINING_CONTEXT)
         {
-            TRAINING_CONTEXT.remove();
-        }
-        else
-        {
-            TRAINING_CONTEXT.set(resume);
+            if (resume == null)
+            {
+                TRAINING_CONTEXT.remove();
+            }
+            else
+            {
+                TRAINING_CONTEXT.set(resume);
+            }
         }
     }