Sobes.tech
Middle

Wat zijn de verschillen tussen de methoden Thread.sleep() en Thread.yield()?

sobes.tech AI

Antwoord van AI

Thread.sleep() onderbreekt de uitvoering van de huidige thread voor een bepaalde tijd, waardoor deze in de staat Timed Waiting komt. Het geeft geen CPU aan andere threads. Thread.yield() informeert de thread scheduler dat de huidige thread tijdelijk de uitvoering kan overdragen aan andere threads met dezelfde of hogere prioriteit, maar er is geen garantie dat dit gebeurt. yield() zet de thread in de staat Runnable.

Belangrijkste verschillen:

  • Duur: sleep() garandeert onderbreking voor een gespecificeerde tijd. yield() garandeert geen controle of een specifieke pauzeduur.
  • Threadstatus: sleep() zet de thread in de staat Timed Waiting (of Waiting met timeout). yield() zet de thread in de staat Runnable.
  • Doel: sleep() wordt gebruikt om vertragingen in te voeren. yield() wordt gebruikt om andere threads de kans te geven uit te voeren, vooral in lussen, om monopolisatie van de CPU te voorkomen.
  • Planner: sleep() beïnvloedt de planner niet (behalve dat de thread inactief is). yield() is een suggestie voor de planner.

Voorbeeld van gebruik:

// Gebruik van sleep()
try {
    Thread.sleep(100); // Pauzeer voor 100 milliseconden
} catch (InterruptedException e) {
    Thread.currentThread().interrupt();
}
// Gebruik van yield()
Thread.yield(); // Poging om de uitvoering over te dragen