Sobes.tech
Middle

Фарқиятҳои байни усулҳои Thread.sleep() ва Thread.yield() чист?

sobes.tech AI

Ҷавоб аз AI

Thread.sleep() ағымдағы жіпті белгілі бір уақытқа тоқтатады және оны Timed Waiting күйіне ауыстырады. Ол басқа жіптерге CPU-ны бермейді. Thread.yield() ағымдағы жіпке, бірдей немесе жоғарырақ басымдықтағы басқа жіптерге уақытша орын беру дайын екенін хабарлайды, бірақ бұл орын алатынына кепілдік бермейді. yield() жіпті Runnable күйіне ауыстырады.

Негізгі айырмашылықтар:

  • Ұзақтығы: sleep() белгіленген уақытқа тоқтауды кепілдейді. yield() басқаруды беру немесе нақты үзіліс ұзақтығын кепілдемейді.
  • Жіптің күйі: sleep() жіпті Timed Waiting (немесе Waiting тайм-аутпен) күйіне ауыстырады. yield() жіпті Runnable күйіне ауыстырады.
  • Мақсаты: sleep() кідірістер енгізу үшін пайдаланылады. yield() басқа жіптердің орындалуына мүмкіндік беру үшін пайдаланылады, әсіресе циклдерде, CPU-ны монополиялауды болдырмау үшін.
  • Жоспарлаушы: sleep() жоспарлаушыға әсер етпейді (соның ішінде жіп белсенді емес). yield() жоспарлаушыға ұсыныс.

Қолдану мысалы:

// sleep() қолдану
try {
    Thread.sleep(100); // 100 миллисекундқа тоқтату
} catch (InterruptedException e) {
    Thread.currentThread().interrupt();
}
// yield() қолдану
Thread.yield(); // орындалуды беру әрекеті