2014-02-15 1 views
-1

Я знаю, что Threads могут иметь приоритет от MIN_PRIORITY (1) до MAX_PRIORITY (10). Однако, если у меня есть более 10 потоков для выполнения, как я буду назначать им приоритет? Может ли приоритет быть более 10?Приоритет потоков для более чем 10 потоков в JAVA

+0

Это не отношение 1: 1. Это (относительный) приоритет. И даже тогда нет никаких гарантий. –

ответ

7

Однако, если у меня есть более 10 потоков для выполнения, как назначить [другой] приоритет [каждому из них]?

Вы не можете.

Но это не должно иметь значения. Скорее всего, приоритеты потоков будут в любом случае вызывать серьезную приоритизацию. Разумеется, javadocs не дает никаких серьезных гарантий относительно того, как (или даже если) приоритеты потоков влияют на планирование потоков.

Фактическая реализация планирования потоков и приоритетов потоков на современной JVM выполняется планировщиком потоков операционной системы. Приоритеты Java Thread действительно немного больше, чем «намек» на операционную систему.

Суть в том, что приложение Java, которое полагается на приоритеты потоков для правильного поведения, скорее всего, будет ненадежным и будет вести себя по-другому/неправильно, если будет работать на другой платформе, к той, которую вы первоначально разработали/отлаживали. Вы никогда не должны полагаться на приоритеты для правильного поведения. Используйте примитивы синхронизации, обеспечивающие, чтобы все происходило в необходимом порядке.


Если вам необходимо точное поведение приоритетов потоков, вам нужно будет использовать «в режиме реального времени Java» JVM, работающие на вершине «операционной системы в режиме реального времени».

2

документация Javadoc гласит следующее о setPriority(int)

Броски:

IllegalArgumentException - Если приоритет не в диапазоне MIN_PRIORITY до MAX_PRIORITY.

В зависимости от реализации вам необходимо указать соответствующее значение. Вы не сможете установить более точный приоритет с помощью Thread.

0

no u не может назначить приоритет, который выше 10, так как u имеет максимальный приоритет 10 и минимальный приоритет равен 1 .. даже если при присвоении приоритета выше 10 его можно рассматривать как приоритет по умолчанию и программа начинает работать в соответствии с этим приоритетом.

Смежные вопросы