Metoda yield()
w języku Java jest częścią klasy Thread
i odgrywa kluczową rolę w zarządzaniu priorytetami wątków w aplikacji wielowątkowej. Umożliwia ona procesorowi przełączanie się między wątkami, które mają ten sam priorytet, co pozwala na bardziej sprawiedliwe i efektywne wykorzystanie zasobów CPU.
Przykład użycia metody yield()
W poniższym przykładzie zobaczymy, jak metoda yield()
może być wykorzystana do symulacji scenariusza, gdzie dwa wątki mają równy priorytet, a metoda yield()
jest używana, aby umożliwić innym wątkom o tej samej ważności procesorowej możliwość wykonania się.
class ThreadExample extends Thread {
private String threadName;
// Konstruktor do nadania nazwy wątkowi
public ThreadExample(String name) {
this.threadName = name;
}
// Metoda run, gdzie definiujemy działanie wątku
public void run() {
for (int i = 0; i < 5; i++) {
// Wypisuje informacje o wątku i jego iteracji
System.out.println(threadName + ": Iteracja " + i);
// Wywołanie metody yield, by dać szansę innym wątkom
Thread.yield();
}
}
public static void main(String[] args) {
// Tworzenie dwóch wątków
ThreadExample thread1 = new ThreadExample("Wątek 1");
ThreadExample thread2 = new ThreadExample("Wątek 2");
// Uruchomienie wątków
thread1.start();
thread2.start();
}
}
Wyjaśnienie kodu:
- Konstruktor (
ThreadExample
): Konstruktor przyjmuje nazwę wątku i przypisuje ją do zmiennejthreadName
. - Metoda
run()
: Jest to główna metoda każdego wątku, która określa, co dany wątek ma robić. W naszym przypadku, wykonuje ona pętlę iterującą pięć razy, wypisując przy tym informacje o wątku i aktualnej iteracji. Thread.yield()
: Wewnątrz pętli, metodayield()
jest wywoływana, co sugeruje planiście wątków, że obecny wątek chciałby oddać swoją kolej na procesorze innym wątkom o tej samej lub wyższej ważności.- Metoda
main()
: W metodziemain()
tworzymy i uruchamiamy dwa wątki, które działają równolegle.
Podsumowanie
Metoda yield()
jest użyteczna, gdy chcemy zwiększyć responsywność i sprawiedliwość aplikacji wielowątkowych, umożliwiając bardziej równomierny podział czasu procesora między wątki o tych samych priorytetach. Użycie tej metody może przyczynić się do lepszego zarządzania zasobami systemowymi, szczególnie w środowiskach z dużą liczbą równoległych wątków.
Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs video Java w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.