adjust moving average threshold, tinker with wait time cutoff, bound max threads by underlying ThreadPoolExecutor.getMaximumPoolSize()