Skip to content

Commit a96a79e

Browse files
JWThewessnicoll
authored andcommitted
Check for multiple processors in OnClassCondition
See gh-16115
1 parent 9da20b7 commit a96a79e

File tree

1 file changed

+19
-0
lines changed
  • spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/condition

1 file changed

+19
-0
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/condition/OnClassCondition.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,25 @@ protected final ConditionOutcome[] getOutcomes(String[] autoConfigurationClasses
4949
// Split the work and perform half in a background thread. Using a single
5050
// additional thread seems to offer the best performance. More threads make
5151
// things worse
52+
if (Runtime.getRuntime().availableProcessors() > 1) {
53+
return resolveOutcomesThreaded(autoConfigurationClasses,
54+
autoConfigurationMetadata);
55+
}
56+
else {
57+
return resolveOutcomes(autoConfigurationClasses, autoConfigurationMetadata);
58+
}
59+
}
60+
61+
private ConditionOutcome[] resolveOutcomes(String[] autoConfigurationClasses,
62+
AutoConfigurationMetadata autoConfigurationMetadata) {
63+
OutcomesResolver outcomesResolver = createOutcomesResolver(
64+
autoConfigurationClasses, 0, autoConfigurationClasses.length,
65+
autoConfigurationMetadata);
66+
return outcomesResolver.resolveOutcomes();
67+
}
68+
69+
private ConditionOutcome[] resolveOutcomesThreaded(String[] autoConfigurationClasses,
70+
AutoConfigurationMetadata autoConfigurationMetadata) {
5271
int split = autoConfigurationClasses.length / 2;
5372
OutcomesResolver firstHalfResolver = createOutcomesResolver(
5473
autoConfigurationClasses, 0, split, autoConfigurationMetadata);

0 commit comments

Comments
 (0)