protected Integer resolveMoveThreadCount() {
int availableProcessorCount = getAvailableProcessors();
Integer resolvedMoveThreadCount;
if (moveThreadCount == null || moveThreadCount.equals(MOVE_THREAD_COUNT_NONE)) {
return null;
} else if (moveThreadCount.equals(MOVE_THREAD_COUNT_AUTO)) {
resolvedMoveThreadCount = (availableProcessorCount - 2);
if (resolvedMoveThreadCount <= 1) {
return null;
}
} else {
resolvedMoveThreadCount = ConfigUtils.resolveThreadPoolSizeScript(
"moveThreadCount", moveThreadCount, MOVE_THREAD_COUNT_NONE, MOVE_THREAD_COUNT_AUTO);
}
if (resolvedMoveThreadCount < 1) {
throw new IllegalArgumentException("The moveThreadCount (" + moveThreadCount
+ ") resulted in a resolvedMoveThreadCount (" + resolvedMoveThreadCount
+ ") that is lower than 1.");
}
if (resolvedMoveThreadCount > availableProcessorCount) {
logger.warn("The resolvedMoveThreadCount ({}) is higher "
+ "than the availableProcessorCount ({}), which is counter-efficient.",
resolvedMoveThreadCount, availableProcessorCount);
}
return resolvedMoveThreadCount;
}