– Cześć, Amigo! Dzisiaj będziemy mieli krótką, ale ciekawą lekcję. Opowiem ci o statycznej metodzie yield klasy Thread.

Wiesz już, że procesor stale przełącza się pomiędzy wątkami. Każdemu wątkowi przypisany jest mały kawałek czasu procesora, zwany kwantem. Po upływie tego czasu procesor przełącza się na inny wątek i wykonuje jego komendy. Wywołanie Thread.yield() pozwala na wcześniejsze zakończenie bieżącego wątku. Innymi słowy - mówi to procesorowi, aby przełączył się na następny wątek.

– Ale dlaczego jeden wątek miałby rezygnować ze swojego czasu na rzecz innego?

– Nie zdarza się to często. Wywołanie yield oznacza, że nasz wątek wykonał swoje zadanie przed czasem i że komenda po yield będzie zaczynała działanie, mając pełen kwant czasu. W ten sposób zmniejsza się prawdopodobieństwo, że zostanie przerwana. Zwłaszcza jeśli jest to krótka komenda, tzn. jej wykonanie nie zajmie dużo czasu. Można to wykorzystać przy optymalizacji niektórych procesów.

Powiem Ci też, że Thread.sleep(0) działa w zasadzie w identyczny sposób. Myślę, że na początku nie będziesz używać metody yield zbyt często, ale warto o niej pamiętać.