Я начну со вашего второго вопроса, я хотел бы согласиться с остальным, что StringBuilder vs String очень сильно зависит от конкретных манипуляций со строками. Я «тестировал» это один раз и, вообще говоря, по мере увеличения количества выделенных строк (обычно в форме конкатенаций) общее время выполнения увеличивалось. Я не буду вдаваться в подробности и просто скажу, что StringBuilder оказался наиболее эффективным сверхурочным временем по сравнению с String, StringBuffer, String.format (), MessageFormat ...
Мое эмпирическое правило таково, что всякий раз, когда я хочу объединить более 3 строк, я всегда использую StringBuilder.
Что касается вашего первого вопроса. У нас было требование довести загрузку процессора до 5%. Задача не из легких. Мы использовали механизм Spring AOP для добавления Thread.sleep () перед выполнением любого метода с интенсивным использованием процессора. Thread.sleep () будет вызываться, только если будет превышено некоторое ограничение. Мне жаль говорить, что вычисление этого предела не так просто. И даже с сожалением могу сказать, что я до сих пор не получил разрешение размещать его в сети. Так что это просто для того, чтобы поставить вас на интересную, но сложную трассу, которая доказала свою эффективность с течением времени.