Middle
Koje su razlike između metoda Thread.sleep() i Thread.yield()?
sobes.tech АИ
Одговор од АИ
Thread.sleep() zaustavlja izvršavanje trenutne niti na određeno vrijeme, prebacujući je u stanje Timed Waiting. Ne prepušta CPU drugim nitima. Thread.yield() obavještava planera niti da je trenutna nit spremna privremeno prepustiti izvršavanje drugim nitima s istim ili višim prioritetom, ali nema garancije da će to učiniti. yield() prebacuje nit u stanje Runnable.
Glavne razlike:
- Trajanje:
sleep()garantira zaustavljanje na zadano vrijeme.yield()ne garantira prijenos kontrole ili određeno trajanje pauze. - Stanje niti:
sleep()prebacuje nit u stanjeTimed Waiting(iliWaitings timeoutom).yield()prebacuje nit u stanjeRunnable. - Svrha:
sleep()se koristi za uvod u odgode.yield()se koristi za omogućavanje izvršavanja drugih niti, posebno u petljama, kako bi se izbjegla monopolizacija CPU-a. - Planer:
sleep()ne utječe na planera (osim što nit nije aktivna).yield()je sugestija za planera.
Primjer korištenja:
// Korištenje sleep()
try {
Thread.sleep(100); // Pauza od 100 milisekundi
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
// Korištenje yield()
Thread.yield(); // Pokušaj da se preda izvršavanje