Приоритеты потоков
— Продолжим наш урок. Что же такое приоритеты нитей и зачем они нужны.
В реальных задачах важность работы разных нитей может сильно различаться. Для контроля этого процесса был придуман приоритет работы. У каждой нити есть такой приоритет – это число от 1 до 10.
10 – это наивысший приоритет.
Если приоритет не задан, то нить получает приоритет 5 — средний.
Приоритет нити не сильно влияет на ее работу, а носит скорее рекомендательный характер. Если есть несколько спящих нитей, которые нужно запустить, то Java-машина сначала запустит нить с более высоким приоритетом.
Java-машина управляет нитями так, как посчитает нужным. Нити с низким приоритетом не будут простаивать. Просто они будут получать меньше времени, чем другие, но выполняться все равно будут.
В большинстве случаев нити всегда выполняются с одинаковым приоритетом. Попытка дать одной нити больше времени, чем другим, часто указывает на архитектурную ошибку программы.
— Ничего себе. А я уже размечтался, что сейчас назначу нити самый высокий приоритет, и она будет делать в 10 раз больше.
— А тут, оказывается, ситуация – близкая к finalize: нить с высоким приоритетом может и будет работать больше, а может и нет – никто не дает никакой гарантии.
— Кстати, а как поменять приоритет нити?
— Это очень просто. У класса Thread есть два метода:
void setPriority(int newPriority)
У класса Thread так же есть три константы:
public final static int MIN_PRIORITY = 1;
public final static int NORM_PRIORITY = 5;
public final static int MAX_PRIORITY = 10;
— Дай, я угадаю. MIN_PRIORITY — это минимальный приоритет, MAX_PRIORITY — максимальный, а NORM_PRIORITY — приоритет по умолчанию?
— Да, именно так. Сможешь сам написать код, который выставляет нити наивысший приоритет.
— А тут есть какой-то подвох? Вроде бы так:
Thread thread = new MyThread(); thread.setPriority(Thread. MAX_PRIORITY) thread.start();
— Все верно. Ничего сложного да?
— Ага. А можно устанавливать/менять приоритет нити после ее запуска? Или тут как с setDaemon – обязательно выставить значение до старта нити?
— Приоритет можно менять и после старта. Как я уже говорила, кардинальных изменений это не влечет.
— Небольшая, но интересная тема. Спасибо, Элли.
Приоритеты потоков
— Продолжим наш урок. Что же такое приоритеты нитей и зачем они нужны.
В реальных задачах важность работы разных нитей может сильно различаться. Для контроля этого процесса был придуман приоритет работы. У каждой нити есть такой приоритет – это число от 1 до 10.
10 – это наивысший приоритет.
Если приоритет не задан, то нить получает приоритет 5 — средний.
Приоритет нити не сильно влияет на ее работу, а носит скорее рекомендательный характер. Если есть несколько спящих нитей, которые нужно запустить, то Java-машина сначала запустит нить с более высоким приоритетом.
Java-машина управляет нитями так, как посчитает нужным. Нити с низким приоритетом не будут простаивать. Просто они будут получать меньше времени, чем другие, но выполняться все равно будут.
В большинстве случаев нити всегда выполняются с одинаковым приоритетом. Попытка дать одной нити больше времени, чем другим, часто указывает на архитектурную ошибку программы.
— Ничего себе. А я уже размечтался, что сейчас назначу нити самый высокий приоритет, и она будет делать в 10 раз больше.
— А тут, оказывается, ситуация – близкая к finalize: нить с высоким приоритетом может и будет работать больше, а может и нет – никто не дает никакой гарантии.
— Кстати, а как поменять приоритет нити?
— Это очень просто. У класса Thread есть два метода:
void setPriority(int newPriority)
У класса Thread так же есть три константы:
public final static int MIN_PRIORITY = 1;
public final static int NORM_PRIORITY = 5;
public final static int MAX_PRIORITY = 10;
— Дай, я угадаю. MIN_PRIORITY — это минимальный приоритет, MAX_PRIORITY — максимальный, а NORM_PRIORITY — приоритет по умолчанию?
— Да, именно так. Сможешь сам написать код, который выставляет нити наивысший приоритет.
— А тут есть какой-то подвох? Вроде бы так:
Thread thread = new MyThread(); thread.setPriority(Thread. MAX_PRIORITY) thread.start();
— Все верно. Ничего сложного да?
— Ага. А можно устанавливать/менять приоритет нити после ее запуска? Или тут как с setDaemon – обязательно выставить значение до старта нити?
— Приоритет можно менять и после старта. Как я уже говорила, кардинальных изменений это не влечет.
— Небольшая, но интересная тема. Спасибо, Элли.
Как установить приоритет java
Learn Latest Tutorials
Preparation
Trending Technologies
B.Tech / MCA
Javatpoint Services
JavaTpoint offers too many high quality services. Mail us on h[email protected], to get more information about given services.
- Website Designing
- Website Development
- Java Development
- PHP Development
- WordPress
- Graphic Designing
- Logo
- Digital Marketing
- On Page and Off Page SEO
- PPC
- Content Development
- Corporate Training
- Classroom and Online Training
- Data Entry
Training For College Campus
JavaTpoint offers college campus training on Core Java, Advance Java, .Net, Android, Hadoop, PHP, Web Technology and Python. Please mail your requirement at [email protected].
Duration: 1 week to 2 week
Like/Subscribe us for latest updates or newsletter