Middle
Kāda ir atšķirība starp metodēm Thread.sleep() un Thread.yield()?
sobes.tech AI
Atbilde no AI
Thread.sleep() pārtrauc pašreizējo pavedienu uz noteiktu laiku un pārvieto to stāvoklī Timed Waiting. Tas neatskaita CPU citiem pavedieniem. Thread.yield() informē pavedienu plānotāju, ka pašreizējais pavediens ir gatavs īslaicīgi atteikties no izpildes citiem pavedieniem ar tādu pašu vai augstāku prioritāti, bet nav garantijas, ka tas notiks. yield() pārvieto pavedienu stāvoklī Runnable.
Galvenās atšķirības:
- Ilgums:
sleep()garantē pārtraukšanu noteiktā laikā.yield()ne garantē kontroli vai konkrētu pauzes ilgumu. - Pavediena stāvoklis:
sleep()pārvieto pavedienu stāvoklīTimed Waiting(vaiWaitingar laika limitu).yield()pārvieto pavedienu stāvoklīRunnable. - Mērķis:
sleep()tiek izmantots aizkavējumu ieviešanai.yield()tiek izmantots, lai ļautu citiem pavedieniem darboties, īpaši ciklos, lai izvairītos no CPU monopola. - Plānotājs:
sleep()neietekmē plānotāju (izņemot to, ka pavediens ir neaktīvs).yield()ir ieteikums plānotājam.
Piemērs:
// Sleep() lietošana
try {
Thread.sleep(100); // 100 milisekunžu pārtraukums
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
// Yield() lietošana
Thread.yield(); // Mēģinājums nodot izpildi