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)
