Repository: tapestry-5
Updated Branches:
  refs/heads/master 972637000 -> 9c89af933


TAP5-2545, TAP5-2557: reduce lock-contention during page loading #1


Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/9c89af93
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/9c89af93
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/9c89af93

Branch: refs/heads/master
Commit: 9c89af933eafc0465a780878fbadffdcfae9bacb
Parents: 9726370
Author: Michael Mikhulya <[email protected]>
Authored: Tue Jul 19 11:55:05 2016 +0300
Committer: Jochen Kemnade <[email protected]>
Committed: Mon Jul 25 08:35:03 2016 +0200

----------------------------------------------------------------------
 .../services/ComponentInstantiatorSourceImpl.java    | 15 +++------------
 1 file changed, 3 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/9c89af93/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java
----------------------------------------------------------------------
diff --git 
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java
 
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java
index 4bc3610..a267d00 100644
--- 
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java
+++ 
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java
@@ -85,7 +85,7 @@ public final class ComponentInstantiatorSourceImpl implements 
ComponentInstantia
     /**
      * Map from class name to Instantiator.
      */
-    private final Map<String, Instantiator> classToInstantiator = 
CollectionFactory.newMap();
+    private final Map<String, Instantiator> classToInstantiator = 
CollectionFactory.newConcurrentMap();
 
     private final Map<String, ComponentModel> classToModel = 
CollectionFactory.newMap();
 
@@ -200,18 +200,9 @@ public final class ComponentInstantiatorSourceImpl 
implements ComponentInstantia
         classToModel.clear();
     }
 
-    public synchronized Instantiator getInstantiator(final String className)
+    public Instantiator getInstantiator(final String className)
     {
-        Instantiator result = classToInstantiator.get(className);
-
-        if (result == null)
-        {
-            result = createInstantiatorForClass(className);
-
-            classToInstantiator.put(className, result);
-        }
-
-        return result;
+        return classToInstantiator.computeIfAbsent(className, 
this::createInstantiatorForClass);
     }
 
     private Instantiator createInstantiatorForClass(final String className)

Reply via email to