Топ-100Метод yield в Java - CodOrbits
LogoCodOrbits

Раздел: Многопоточность

В этом разделе вы узнаете, как использовать многопоточность в Java для повышения производительности и параллельной обработки.

Все разделы
Иконка Многопоточность

Метод yield в Java

Last updated: 6 мая 2025 г.

Когда поток вызывает метод yield он говорит: мне сейчас не обязательно заканчивать свою работу и занимать время процессора и больше времени передастся другим потокам

Пример программы:

1class YieldExample {
2    public static void main(String[] args) {
3        new SomeThread().start();
4        new SomeThread().start();
5        new SomeThread().start();
6    }
7}
8
9class SomeThread extends Thread {
10    public void run() {
11        System.out.println(Thread.currentThread().getName() 
12            + " уступает свое место другим потокам");
13        Thread.yield();
14        System.out.println(Thread.currentThread().getName() 
15            + " завершился");
16    }
17}

Вывод:

Мы запускаем три потока. Планировщик потоков может запустить эти потоки в разном порядке (например, 2-1-0 или 1-0-2)

Example

Рассмотрим порядок 0-1-2.

Первым запускается 0 поток и с помощью yield он уступает время работы процессора другим потокам, то есть потоку 1 и потоку 2.

Вторым до yield доходит поток 1. Он уступает другим, то есть оставшемуся 2. Поток 2 доходит до yield последним и хочет уступить другим но уступать уже некому

Если больше нет потоков, которым можно уступить место для выполнения, то уступается место для выполнения последнему уступившему перед потоком 2 то есть потоку 1.

Далее последнему уступившему перед 1, то есть 0 и потом 2.

На консоли мы видим именно такую последовательность выполнения.


Следующие уроки

Semaphore в Java

10
мин.

Similar Articles Icon
Divider

ReentrantLock - гибкая альтернатива synchronized

11
мин.

Similar Articles Icon
Divider

Ожидание завершения потоков с помощью CountDownLatch

10
мин.

Similar Articles Icon