У меня та же проблема в Windows - запуск подпроцессов, которые используют все процессоры (параллельные потоки), но я хочу хорошей отзывчивости в моей среде разработки Windows.
Решение : после запуска нескольких заданий:
DOS cmd >> wmic process where name="javaw.exe" CALL setpriority "below normal"
Нет, это не повлияет на процесс eclipse.exe.
Решение Java : вставьте этот код в программы, интенсивно использующие ЦП, чтобы снизить собственный приоритет Windows:
public static void lowerMyProcessPriority() throws IOException {
String pid = ManagementFactory.getRuntimeMXBean().getName();
int p = pid.indexOf("@");
if (p > 0) pid = pid.substring(0,p);
String cmd = "wmic process where processid=<pid> CALL setpriority".replace("<pid>", pid);
List<String> ls = new ArrayList<>(Arrays.asList(cmd.split(" ")));
ls.add("\"below normal\"");
ProcessBuilder pb = new ProcessBuilder(ls);
pb.start();
}
Да, проверено. Работает на Win7.