La méthode yield() applique une pause à l'exécution du thread courant, afin de libérer le processeur pour d'autres unités d'exécution en attente.

A l'instar de la méthode sleep(), la méthode yield() étant déclarée statique, ne peut être invoquée sur une instance de la classe Thread.

public class Pause {
    public static void main(String args[]) {
        Tache thread1 = new Tache("1");
        Tache thread2 = new Tache("2");
        thread1.start();
        thread2.start();

        while (true) {
            System.out.println("Thread principal");
            Thread.yield();
        }
    }
}
class Tache extends Thread {
    public Tache(String s) {
        super(s);
    }
    public void run() {
        while (true) {
            System.out.println("Thread n° " + this.getName());
            Thread.yield();
        }
    }
}

Dans cet exemple, trois threads sont mis en concurrence (thread1, thread2 et le thread principal). Chacun, après un tour de boucle, cède sa place à un autre thread, si bien que les threads se chevauchent, évitant ainsi que l'un d'eux s'exécute deux fois de suite.

La méthode yield() s'avère particulièrement utile dans un contexte où d'autres threads possèdent la même priorité. Toutefois, l'ordonnanceur ne garantit pas quel sera le prochain thread à être exécuté.