High thread contention in org.jboss.protean.arc.RequestContext
org.jboss.protean.arc.RequestContext.activate()[1] and org.jboss.protean.arc.RequestContext.deactivate()[2] both use coarse grained locking via method synchronization.

These methods are on a hot code path, and cause a lot of thread contention under load.  For a 1min 39s sample, I have observed a total of 1hr 7min 54s of thread time blocked waiting for the sync lock. 

I am not sure of the intention of the synchronization as the currentContext is accessed in methods other than activate() and deactivate(), so is not not consistently protected. The property is also a threadLocal, so each thread should have it's own copy of the object.  

I am not sure that the synchronization is necessary, but if it is required, we need to implement a more lightweight, finer grained, locking implementation.

[1] https://github.com/protean-project/shamrock/blob/master/ext/arc/runtime/src/main/java/org/jboss/protean/arc/RequestContext.java#L95
[2] https://github.com/protean-project/shamrock/blob/master/ext/arc/runtime/src/main/java/org/jboss/protean/arc/RequestContext.java#L109
diff --git a/ext/arc/runtime/src/main/java/org/jboss/protean/arc/RequestContext.java b/ext/arc/runtime/src/main/java/org/jboss/protean/arc/RequestContext.java
index 5ef92500ca6..9ae045c31c0 100644
--- a/ext/arc/runtime/src/main/java/org/jboss/protean/arc/RequestContext.java
+++ b/ext/arc/runtime/src/main/java/org/jboss/protean/arc/RequestContext.java
@@ -92,7 +92,7 @@ public void destroy(Contextual<?> contextual) {
     }
 
     @Override
-    public synchronized void activate(Collection<InstanceHandle<?>> initialState) {
+    public void activate(Collection<InstanceHandle<?>> initialState) {
         Map<Contextual<?>, InstanceHandle<?>> state = new HashMap<>();
         if (initialState != null) {
             for (InstanceHandle<?> instanceHandle : initialState) {
@@ -106,7 +106,7 @@ public synchronized void activate(Collection<InstanceHandle<?>> initialState) {
     }
 
     @Override
-    public synchronized void deactivate() {
+    public void deactivate() {
         currentContext.remove();
     }
 
['ext/arc/runtime/src/main/java/org/jboss/protean/arc/RequestContext.java']