У вас есть метод setPriority () в классе Thread.
Проверьте этот javadoc .
Установка максимального приоритета потока:
public static void main(String args[]) {
Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
// Your main code.
}
Серия статей здесь указывает на некоторые сложности в управлении приоритетами потоков на различных платформах.
Интересно, ваша основная проблема просто в том, что ваши рабочие потоки очень интенсивно использует процессор и, следовательно, редко достигает точки, когда они естественным образом "отпускают" процессор (например, выполняя некоторый ввод-вывод или спящий). Если это так, вы можете включить некоторые вызовы yield () в этих рабочих, тем самым давая другим Потокам больше шансов.
вы можете использовать метод setPriority (). Например:
new MyThread("Foo").start();
Thread bar = new MyThread("Bar");
bar.setPriority( Thread.NORM_PRIORITY + 1 );
bar.start();
Это дает bar новый приоритет, который должен быстро занять место Foo
Edit:
Чтобы ответить на ваш комментарий, вы можете установить максимальный приоритет, используя:
bar.setPriority( Thread.MAX_PRIORITY );