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(); // орындалуды беру әрекеті