JavaRush /Курсы /Java Core /yield — пропуск хода

yield — пропуск хода

Java Core
7 уровень , 7 лекция
Открыта

— Привет, Амиго! У нас сегодня будет небольшой и интересный урок. Я расскажу тебе про yield – статический метод класса Thread.

Элли тебе уже рассказывала, что процессор постоянно переключается между нитями. Каждой нити выделяется небольшой кусочек процессорного времени, называемый квантом. Когда это время истекает – процессор переключается на другую нить и начинает выполнять ее команды. Вызов метода Thread.yield() позволяет досрочно завершить квант времени текущей нити или, другими словами, переключает процессор на следующую нить.

— А зачем нити может понадобиться уступить свое время другой нити?

— Необходимость в этом возникает не часто. Вызов yield приводит к тому, что «наша нить досрочно завершает ход», и что следующая за yield команда начнется с полного кванта времени. Значит шансы, что ее прервут – меньше. Особенно, если она небольшая (по времени). Такой подход можно использовать при оптимизации некоторых процессов.

Еще могу добавить, что метод Thread.sleep(0) работает фактически так же. Думаю, ты вначале будешь использовать метод yield не очень часто, но знать о нем — полезно.

Комментарии (135)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
30 мая 2025
А сколько людей сейчас, которые +- двигаются со мной в прохождении?
Zim4ik Уровень 34
12 июня 2025
Есть ) начал в апреле.
12 июня 2025
🤜🤛
Vyacheslav Уровень 30 Expert
14 мая 2025
Чем дальше тем реже комментарии
DeepFryer Уровень 28
1 июля 2025
Даже грустно как-то хд I'm alone(
Lacer Уровень 30
17 апреля 2025
Есть кто живой?
Олег Сычев Уровень 29
12 мая 2025
есть)))
30 мая 2025
Ау! Здесь кто-нибудь есть?)
{Java_Shark} Уровень 36
30 октября 2024
++
Денис Кокшаров Уровень 32
5 марта 2025
++Java_Shark
Philipp Vasichev Уровень 28
11 октября 2024
🤫
Cвят Уровень 29
16 июня 2024
Представим пример с кабинками голосования и мьютексом, вот стоит 10 человек и 5 кабинок для голосования, тогда каждый человек это поток который заходит в объект блокирует мьютекс и выполняет код метода объекта: достает листок заполняет и засовывает в урну Ситуация с Thread.yield(): 1. Человек 1 заходит в очередь для голосования, но понимает что он старый дед и его код метода слишком длинный 2. Человек 1 решает временно уступить своё место для увеличения производительности очереди (вызывает Thread.yield()) 3. Человек 2, который тоже стоит в очереди, видит, что Человек 1 уступил место, и заходит в кабину для голосования. Польза: Дед не тормозит работу голосования иногда забегая делая часть кода и снова уступая. при этом он продолжает с того же места где закончил. При этом yield не нужен если все потоки делают одну задачу с одинаковым временем и приоритетом)
Абзал Уровень 38
20 июля 2024
Классный пример =)
Wren Уровень 29
27 августа 2024
О, хороший пример. Спасибо.
SomeBody098 Уровень 51
15 июня 2024
спидран по лекции
Даниил Уровень 37
19 февраля 2024
о тут есть кто-то из 2024 года
Novikova Natalia Уровень 32
20 февраля 2024
привет из настоящего)
Andrey Vysotsky Уровень 30
13 марта 2024
Настоящее? Парни, вы в прошлом!
Кирилл Уровень 34
16 апреля 2024
Кто бы говорил ;)
Сергей Акатов Уровень 43
18 апреля 2024
+
Bulat Уровень 32
25 апреля 2024
+
Азиз Абдуллаев Уровень 35
2 мая 2024
+
David Dzhikia Уровень 29 Expert
6 июня 2024
+
SomeBody098 Уровень 51
15 июня 2024
даров
Егор Уровень 37
15 июня 2024
+
Vlad Уровень 30
11 августа 2024
Вижу
15 августа 2024
+
Arslan Alyautdinov Уровень 33
24 августа 2024
+
Lord Leonidus Уровень 35
1 октября 2024
+ здесь
Максим Li Уровень 40
2 февраля 2024
3.02.2024