Чтобы ответить на вопрос буквально, вы можете сделать это.Однако, как указано ниже, это, вероятно, будет бессмысленно, особенно если поток уже имеет высокий приоритет.
for(Thread t: Thread.getAllStackTraces().keySet())
if (t.getName().equals("Finalizer")) {
System.out.println(t);
t.setPriority(Thread.MAX_PRIORITY);
System.out.println(t);
}
печатает
Thread[Finalizer,8,system]
Thread[Finalizer,10,system]
Если вы не используете 100%для всех ваших ядер или близких к ним приоритет не имеет значения, потому что даже самый низкий приоритет получит столько ЦП, сколько ему нужно.
Примечание. В Linux он будет игнорировать повышенные приоритеты, если вы не являетесь пользователем root.
Вместо этого вам следует сократить объем работы, выполняемой финализатором.В идеале это не должно иметь ничего общего.Одной из причин высокой загрузки в финализаторе является создание ресурсов, которые должны быть закрыты, но отбрасываются.(оставляя финализатор для закрытия ресурса)
Короче, вы должны попытаться определить, какие ресурсы завершаются, и убедиться, что им не нужно ничего делать, когда вызывается finalize (), в идеале don 'Этот метод вообще не используется.
Возможно, ресурсы закрываются на более старой версии ядра Linux немного дольше.Я бы проверил, что оборудование идентично, так как это может означать, что очистка ресурса занимает больше времени.(Но реальное исправление состоит в том, чтобы гарантировать, что это не должно делать это)