Consistent fine-tuning of synchronized and concurrent data structures
In particular, avoiding synchronized Sets and Maps wherever possible (preferring a ConcurrentHashMap even instead of a synchronized Set) and specifying appropriate ConcurrentHashMap initial capacities (even if we end up choosing 16).
@ -46,7 +46,7 @@ public abstract class AbstractAdvisingBeanPostProcessor extends ProxyConfig
@@ -46,7 +46,7 @@ public abstract class AbstractAdvisingBeanPostProcessor extends ProxyConfig
@ -136,15 +133,15 @@ public abstract class AbstractAutoProxyCreator extends ProxyConfig
@@ -136,15 +133,15 @@ public abstract class AbstractAutoProxyCreator extends ProxyConfig
@ -264,19 +261,19 @@ public abstract class AbstractAutoProxyCreator extends ProxyConfig
@@ -264,19 +261,19 @@ public abstract class AbstractAutoProxyCreator extends ProxyConfig
@ -286,7 +283,7 @@ public abstract class AbstractAutoProxyCreator extends ProxyConfig
@@ -286,7 +283,7 @@ public abstract class AbstractAutoProxyCreator extends ProxyConfig
// The TargetSource will handle target instances in a custom fashion.
@ -318,7 +315,7 @@ public abstract class AbstractAutoProxyCreator extends ProxyConfig
@@ -318,7 +315,7 @@ public abstract class AbstractAutoProxyCreator extends ProxyConfig
@ -344,27 +341,27 @@ public abstract class AbstractAutoProxyCreator extends ProxyConfig
@@ -344,27 +341,27 @@ public abstract class AbstractAutoProxyCreator extends ProxyConfig
@ -62,7 +61,7 @@ public class ThreadLocalTargetSource extends AbstractPrototypeBasedTargetSource
@@ -62,7 +61,7 @@ public class ThreadLocalTargetSource extends AbstractPrototypeBasedTargetSource
@ -85,7 +84,9 @@ public class ThreadLocalTargetSource extends AbstractPrototypeBasedTargetSource
@@ -85,7 +84,9 @@ public class ThreadLocalTargetSource extends AbstractPrototypeBasedTargetSource
// Associate target with ThreadLocal.
target=newPrototypeInstance();
this.targetInThread.set(target);
this.targetSet.add(target);
synchronized(this.targetSet){
this.targetSet.add(target);
}
}
else{
++this.hitCount;
@ -119,7 +120,9 @@ public class ThreadLocalTargetSource extends AbstractPrototypeBasedTargetSource
@@ -119,7 +120,9 @@ public class ThreadLocalTargetSource extends AbstractPrototypeBasedTargetSource
@ -119,10 +119,10 @@ public class AutowiredAnnotationBeanPostProcessor extends InstantiationAwareBean
@@ -119,10 +119,10 @@ public class AutowiredAnnotationBeanPostProcessor extends InstantiationAwareBean
@ -89,8 +88,11 @@ public class RequiredAnnotationBeanPostProcessor extends InstantiationAwareBeanP
@@ -89,8 +88,11 @@ public class RequiredAnnotationBeanPostProcessor extends InstantiationAwareBeanP
@ -137,7 +139,7 @@ public class RequiredAnnotationBeanPostProcessor extends InstantiationAwareBeanP
@@ -137,7 +139,7 @@ public class RequiredAnnotationBeanPostProcessor extends InstantiationAwareBeanP
@ -149,7 +151,7 @@ public class RequiredAnnotationBeanPostProcessor extends InstantiationAwareBeanP
@@ -149,7 +151,7 @@ public class RequiredAnnotationBeanPostProcessor extends InstantiationAwareBeanP
@ -71,8 +70,11 @@ public class PropertyOverrideConfigurer extends PropertyResourceConfigurer {
@@ -71,8 +70,11 @@ public class PropertyOverrideConfigurer extends PropertyResourceConfigurer {
privatebooleanignoreInvalidKeys=false;
/** Contains names of beans that have overrides */
@ -128,7 +130,7 @@ public class PropertyOverrideConfigurer extends PropertyResourceConfigurer {
@@ -128,7 +130,7 @@ public class PropertyOverrideConfigurer extends PropertyResourceConfigurer {
logger.debug("Property '"+key+"' set to value ["+value+"]");
@ -159,7 +161,7 @@ public class PropertyOverrideConfigurer extends PropertyResourceConfigurer {
@@ -159,7 +161,7 @@ public class PropertyOverrideConfigurer extends PropertyResourceConfigurer {
@ -145,11 +145,11 @@ public abstract class AbstractAutowireCapableBeanFactory extends AbstractBeanFac
@@ -145,11 +145,11 @@ public abstract class AbstractAutowireCapableBeanFactory extends AbstractBeanFac
/** Cache of unfinished FactoryBean instances: FactoryBean name --> BeanWrapper */
@ -112,7 +112,7 @@ public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFacto
@@ -112,7 +112,7 @@ public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFacto
/** Optional id for this factory, for serialization purposes */
privateStringserializationId;
@ -127,16 +127,16 @@ public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFacto
@@ -127,16 +127,16 @@ public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFacto
@ -81,22 +81,22 @@ public class DefaultSingletonBeanRegistry extends SimpleAliasRegistry implements
@@ -81,22 +81,22 @@ public class DefaultSingletonBeanRegistry extends SimpleAliasRegistry implements
/** List of suppressed Exceptions, available for associating related causes */
privateSet<Exception>suppressedExceptions;
@ -108,13 +108,13 @@ public class DefaultSingletonBeanRegistry extends SimpleAliasRegistry implements
@@ -108,13 +108,13 @@ public class DefaultSingletonBeanRegistry extends SimpleAliasRegistry implements
@ -277,27 +279,27 @@ public class RootBeanDefinition extends AbstractBeanDefinition {
@@ -277,27 +279,27 @@ public class RootBeanDefinition extends AbstractBeanDefinition {
@ -155,7 +155,7 @@ public class DefaultNamespaceHandlerResolver implements NamespaceHandlerResolver
@@ -155,7 +155,7 @@ public class DefaultNamespaceHandlerResolver implements NamespaceHandlerResolver
@ -145,7 +145,7 @@ public class PluggableSchemaResolver implements EntityResolver {
@@ -145,7 +145,7 @@ public class PluggableSchemaResolver implements EntityResolver {
@ -70,7 +72,8 @@ public abstract class AbstractFallbackCacheOperationSource implements CacheOpera
@@ -70,7 +72,8 @@ public abstract class AbstractFallbackCacheOperationSource implements CacheOpera
@ -178,7 +178,7 @@ public class CommonAnnotationBeanPostProcessor extends InitDestroyAnnotationBean
@@ -178,7 +178,7 @@ public class CommonAnnotationBeanPostProcessor extends InitDestroyAnnotationBean
@ -513,10 +513,6 @@ public class CommonAnnotationBeanPostProcessor extends InitDestroyAnnotationBean
@@ -513,10 +513,6 @@ public class CommonAnnotationBeanPostProcessor extends InitDestroyAnnotationBean
@ -53,7 +53,7 @@ public abstract class AbstractApplicationEventMulticaster implements Application
@@ -53,7 +53,7 @@ public abstract class AbstractApplicationEventMulticaster implements Application
@ -60,10 +60,10 @@ public class StandardBeanExpressionResolver implements BeanExpressionResolver {
@@ -60,10 +60,10 @@ public class StandardBeanExpressionResolver implements BeanExpressionResolver {
@ -1387,7 +1387,7 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader
@@ -1387,7 +1387,7 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader
@ -53,10 +53,10 @@ public class FormattingConversionService extends GenericConversionService
@@ -53,10 +53,10 @@ public class FormattingConversionService extends GenericConversionService
@ -214,11 +214,14 @@ public class FormattingConversionService extends GenericConversionService
@@ -214,11 +214,14 @@ public class FormattingConversionService extends GenericConversionService
@ -226,7 +229,8 @@ public class FormattingConversionService extends GenericConversionService
@@ -226,7 +229,8 @@ public class FormattingConversionService extends GenericConversionService
@ -254,11 +258,14 @@ public class FormattingConversionService extends GenericConversionService
@@ -254,11 +258,14 @@ public class FormattingConversionService extends GenericConversionService
@ -266,7 +273,8 @@ public class FormattingConversionService extends GenericConversionService
@@ -266,7 +273,8 @@ public class FormattingConversionService extends GenericConversionService
@ -62,7 +61,7 @@ public class LocalVariableTableParameterNameDiscoverer implements ParameterNameD
@@ -62,7 +61,7 @@ public class LocalVariableTableParameterNameDiscoverer implements ParameterNameD
// the cache uses a nested index (value is a map) to keep the top level cache relatively small in size
@ -111,7 +110,7 @@ public class LocalVariableTableParameterNameDiscoverer implements ParameterNameD
@@ -111,7 +110,7 @@ public class LocalVariableTableParameterNameDiscoverer implements ParameterNameD
@ -74,7 +74,7 @@ public class GenericConversionService implements ConfigurableConversionService {
@@ -74,7 +74,7 @@ public class GenericConversionService implements ConfigurableConversionService {
@ -182,8 +182,8 @@ public class GenericConversionService implements ConfigurableConversionService {
@@ -182,8 +182,8 @@ public class GenericConversionService implements ConfigurableConversionService {
@ -480,7 +480,6 @@ public class GenericConversionService implements ConfigurableConversionService {
@@ -480,7 +480,6 @@ public class GenericConversionService implements ConfigurableConversionService {
@ -86,7 +86,7 @@ public class ReflectivePropertyAccessor implements PropertyAccessor {
@@ -86,7 +86,7 @@ public class ReflectivePropertyAccessor implements PropertyAccessor {
@ -264,15 +264,15 @@ public class ReflectivePropertyAccessor implements PropertyAccessor {
@@ -264,15 +264,15 @@ public class ReflectivePropertyAccessor implements PropertyAccessor {
@ -44,10 +43,10 @@ public class SessionHolder extends ResourceHolderSupport {
@@ -44,10 +43,10 @@ public class SessionHolder extends ResourceHolderSupport {
@ -89,12 +88,10 @@ public class SessionHolder extends ResourceHolderSupport {
@@ -89,12 +88,10 @@ public class SessionHolder extends ResourceHolderSupport {
}
publicSessiongetAnySession(){
synchronized(this.sessionMap){
if(!this.sessionMap.isEmpty()){
returnthis.sessionMap.values().iterator().next();
}
returnnull;
if(!this.sessionMap.isEmpty()){
returnthis.sessionMap.values().iterator().next();
}
returnnull;
}
publicvoidaddSession(Sessionsession){
@ -120,10 +117,8 @@ public class SessionHolder extends ResourceHolderSupport {
@@ -120,10 +117,8 @@ public class SessionHolder extends ResourceHolderSupport {
@ -47,7 +46,6 @@ public class ExpectedLookupTemplate extends JndiTemplate {
@@ -47,7 +46,6 @@ public class ExpectedLookupTemplate extends JndiTemplate {
@ -56,9 +54,7 @@ public class ExpectedLookupTemplate extends JndiTemplate {
@@ -56,9 +54,7 @@ public class ExpectedLookupTemplate extends JndiTemplate {
@ -111,7 +112,7 @@ public class TransactionalTestExecutionListener extends AbstractTestExecutionLis
@@ -111,7 +112,7 @@ public class TransactionalTestExecutionListener extends AbstractTestExecutionLis
@ -69,7 +69,7 @@ public abstract class AbstractFallbackTransactionAttributeSource implements Tran
@@ -69,7 +69,7 @@ public abstract class AbstractFallbackTransactionAttributeSource implements Tran
@ -56,8 +56,7 @@ public abstract class AbstractJaxb2HttpMessageConverter<T> extends AbstractXmlHt
@@ -56,8 +56,7 @@ public abstract class AbstractJaxb2HttpMessageConverter<T> extends AbstractXmlHt
@ -74,19 +73,18 @@ public abstract class AbstractJaxb2HttpMessageConverter<T> extends AbstractXmlHt
@@ -74,19 +73,18 @@ public abstract class AbstractJaxb2HttpMessageConverter<T> extends AbstractXmlHt
@ -89,4 +91,4 @@ public class MappingMediaTypeFileExtensionResolver implements MediaTypeFileExten
@@ -89,4 +91,4 @@ public class MappingMediaTypeFileExtensionResolver implements MediaTypeFileExten
@ -62,7 +62,7 @@ public abstract class AbstractNamedValueMethodArgumentResolver implements Handle
@@ -62,7 +62,7 @@ public abstract class AbstractNamedValueMethodArgumentResolver implements Handle
@ -80,11 +80,9 @@ public abstract class AbstractNamedValueMethodArgumentResolver implements Handle
@@ -80,11 +80,9 @@ public abstract class AbstractNamedValueMethodArgumentResolver implements Handle
@ -121,7 +119,6 @@ public abstract class AbstractNamedValueMethodArgumentResolver implements Handle
@@ -121,7 +119,6 @@ public abstract class AbstractNamedValueMethodArgumentResolver implements Handle
@ -146,7 +143,6 @@ public abstract class AbstractNamedValueMethodArgumentResolver implements Handle
@@ -146,7 +143,6 @@ public abstract class AbstractNamedValueMethodArgumentResolver implements Handle
@ -203,9 +199,9 @@ public abstract class AbstractNamedValueMethodArgumentResolver implements Handle
@@ -203,9 +199,9 @@ public abstract class AbstractNamedValueMethodArgumentResolver implements Handle
@ -223,4 +219,5 @@ public abstract class AbstractNamedValueMethodArgumentResolver implements Handle
@@ -223,4 +219,5 @@ public abstract class AbstractNamedValueMethodArgumentResolver implements Handle
@ -41,10 +42,11 @@ public class HandlerMethodArgumentResolverComposite implements HandlerMethodArgu
@@ -41,10 +42,11 @@ public class HandlerMethodArgumentResolverComposite implements HandlerMethodArgu
@ -81,7 +83,7 @@ public class HandlerMethodArgumentResolverComposite implements HandlerMethodArgu
@@ -81,7 +83,7 @@ public class HandlerMethodArgumentResolverComposite implements HandlerMethodArgu
@ -151,7 +151,7 @@ public class AnnotationMethodHandlerAdapter extends PortletContentGenerator
@@ -151,7 +151,7 @@ public class AnnotationMethodHandlerAdapter extends PortletContentGenerator
@ -134,18 +136,18 @@ public class AnnotationMethodHandlerExceptionResolver extends AbstractHandlerExc
@@ -134,18 +136,18 @@ public class AnnotationMethodHandlerExceptionResolver extends AbstractHandlerExc
@ -205,7 +207,7 @@ public class AnnotationMethodHandlerExceptionResolver extends AbstractHandlerExc
@@ -205,7 +207,7 @@ public class AnnotationMethodHandlerExceptionResolver extends AbstractHandlerExc
@ -217,7 +219,7 @@ public class AnnotationMethodHandlerExceptionResolver extends AbstractHandlerExc
@@ -217,7 +219,7 @@ public class AnnotationMethodHandlerExceptionResolver extends AbstractHandlerExc
@ -54,7 +54,7 @@ public class UrlFilenameViewController extends AbstractUrlViewController {
@@ -54,7 +54,7 @@ public class UrlFilenameViewController extends AbstractUrlViewController {
privateStringsuffix="";
/** Request URL path String --> view name String */
@ -188,9 +187,9 @@ public class AnnotationMethodHandlerAdapter extends WebContentGenerator
@@ -188,9 +187,9 @@ public class AnnotationMethodHandlerAdapter extends WebContentGenerator
@ -91,7 +90,7 @@ public class AnnotationMethodHandlerExceptionResolver extends AbstractHandlerExc
@@ -91,7 +90,7 @@ public class AnnotationMethodHandlerExceptionResolver extends AbstractHandlerExc
@ -162,8 +161,7 @@ public class AnnotationMethodHandlerExceptionResolver extends AbstractHandlerExc
@@ -162,8 +161,7 @@ public class AnnotationMethodHandlerExceptionResolver extends AbstractHandlerExc
@ -171,8 +169,8 @@ public class AnnotationMethodHandlerExceptionResolver extends AbstractHandlerExc
@@ -171,8 +169,8 @@ public class AnnotationMethodHandlerExceptionResolver extends AbstractHandlerExc
@ -82,7 +80,7 @@ public class ExceptionHandlerExceptionResolver extends AbstractHandlerMethodExce
@@ -82,7 +80,7 @@ public class ExceptionHandlerExceptionResolver extends AbstractHandlerMethodExce
@ -157,14 +157,14 @@ public class RequestMappingHandlerAdapter extends AbstractHandlerMethodAdapter i
@@ -157,14 +157,14 @@ public class RequestMappingHandlerAdapter extends AbstractHandlerMethodAdapter i
@ -43,7 +43,7 @@ public class InternalPathMethodNameResolver extends AbstractUrlMethodNameResolve
@@ -43,7 +43,7 @@ public class InternalPathMethodNameResolver extends AbstractUrlMethodNameResolve
privateStringsuffix="";
/** Request URL path String --> method name String */