Check for multiple processors in OnClassCondition
See gh-16115
This commit is contained in:
parent
9da20b7e52
commit
a96a79ea45
|
@ -49,6 +49,25 @@ class OnClassCondition extends FilteringSpringBootCondition {
|
|||
// Split the work and perform half in a background thread. Using a single
|
||||
// additional thread seems to offer the best performance. More threads make
|
||||
// things worse
|
||||
if (Runtime.getRuntime().availableProcessors() > 1) {
|
||||
return resolveOutcomesThreaded(autoConfigurationClasses,
|
||||
autoConfigurationMetadata);
|
||||
}
|
||||
else {
|
||||
return resolveOutcomes(autoConfigurationClasses, autoConfigurationMetadata);
|
||||
}
|
||||
}
|
||||
|
||||
private ConditionOutcome[] resolveOutcomes(String[] autoConfigurationClasses,
|
||||
AutoConfigurationMetadata autoConfigurationMetadata) {
|
||||
OutcomesResolver outcomesResolver = createOutcomesResolver(
|
||||
autoConfigurationClasses, 0, autoConfigurationClasses.length,
|
||||
autoConfigurationMetadata);
|
||||
return outcomesResolver.resolveOutcomes();
|
||||
}
|
||||
|
||||
private ConditionOutcome[] resolveOutcomesThreaded(String[] autoConfigurationClasses,
|
||||
AutoConfigurationMetadata autoConfigurationMetadata) {
|
||||
int split = autoConfigurationClasses.length / 2;
|
||||
OutcomesResolver firstHalfResolver = createOutcomesResolver(
|
||||
autoConfigurationClasses, 0, split, autoConfigurationMetadata);
|
||||
|
|
Loading…
Reference in New Issue