Skip to content

Commit e1f51b4

Browse files
stsypanovjhoeller
authored andcommitted
Avoid multiple volatile reads/writes in a row where only one is enough
1 parent f2f84bf commit e1f51b4

File tree

3 files changed

+9
-10
lines changed

3 files changed

+9
-10
lines changed

spring-aop/src/main/java/org/springframework/aop/aspectj/MethodInvocationProceedingJoinPoint.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -221,10 +221,11 @@ public Class<?>[] getParameterTypes() {
221221
@Override
222222
@Nullable
223223
public String[] getParameterNames() {
224-
if (this.parameterNames == null) {
225-
this.parameterNames = parameterNameDiscoverer.getParameterNames(getMethod());
224+
String[] parameterNames = this.parameterNames;
225+
if (parameterNames == null) {
226+
this.parameterNames = parameterNames = parameterNameDiscoverer.getParameterNames(getMethod());
226227
}
227-
return this.parameterNames;
228+
return parameterNames;
228229
}
229230

230231
@Override

spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -644,21 +644,20 @@ protected void inject(Object bean, @Nullable String beanName, @Nullable Property
644644
}
645645
synchronized (this) {
646646
if (!this.cached) {
647+
Object cachedFieldValue = null;
647648
if (value != null || this.required) {
648-
this.cachedFieldValue = desc;
649+
cachedFieldValue = desc;
649650
registerDependentBeans(beanName, autowiredBeanNames);
650651
if (autowiredBeanNames.size() == 1) {
651652
String autowiredBeanName = autowiredBeanNames.iterator().next();
652653
if (beanFactory.containsBean(autowiredBeanName) &&
653654
beanFactory.isTypeMatch(autowiredBeanName, field.getType())) {
654-
this.cachedFieldValue = new ShortcutDependencyDescriptor(
655+
cachedFieldValue = new ShortcutDependencyDescriptor(
655656
desc, autowiredBeanName, field.getType());
656657
}
657658
}
658659
}
659-
else {
660-
this.cachedFieldValue = null;
661-
}
660+
this.cachedFieldValue = cachedFieldValue;
662661
this.cached = true;
663662
}
664663
}

spring-context/src/main/java/org/springframework/cache/support/AbstractCacheManager.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,8 +155,7 @@ protected final void addCache(Cache cache) {
155155
* @param name the name of the cache to be added
156156
*/
157157
private void updateCacheNames(String name) {
158-
Set<String> cacheNames = new LinkedHashSet<>(this.cacheNames.size() + 1);
159-
cacheNames.addAll(this.cacheNames);
158+
Set<String> cacheNames = new LinkedHashSet<>(this.cacheNames);
160159
cacheNames.add(name);
161160
this.cacheNames = Collections.unmodifiableSet(cacheNames);
162161
}

0 commit comments

Comments
 (0)