Middle
Thread.sleep() va Thread.yield() metodlari orasidagi farq nima?
sobes.tech AI
AIdan javob
Thread.sleep() joriy oqimni ma'lum bir vaqtga to'xtatadi va uni Timed Waiting holatiga o'tkazadi. U CPUni boshqa oqimlarga bermaydi. Thread.yield() joriy oqimga, bir xil yoki yuqori prioritetga ega boshqa oqimlarga vaqtincha bajarilishni o'tkazishga tayyor ekanligini bildirish uchun ishlatiladi, ammo bu amalga oshirilishiga kafolat bermaydi. yield() oqimni Runnable holatiga o'tkazadi.
Asosiy farqlar:
- Davomiyligi:
sleep()belgilangan vaqt davomida to'xtatishni kafolatlaydi.yield()nazoratni o'tkazishni yoki aniq to'xtash davomiyligini kafolatlamaydi. - Oqim holati:
sleep()oqimniTimed Waiting(yokiWaitingva timeout bilan) holatiga o'tkazadi.yield()oqimniRunnableholatiga o'tkazadi. - Ma'nosi:
sleep()kechikishlarni kiritish uchun ishlatiladi.yield()boshqa oqimlarning bajarilishini ta'minlash uchun, ayniqsa sikllarda, CPU monopoliyasini oldini olish uchun ishlatiladi. - Rejalashtiruvchi:
sleep()rejalashtiruvchini ta'sir qilmaydi (faqat oqim faol emas).yield()rejalashtiruvchiga tavsiya sifatida xizmat qiladi.
Misol:
// sleep() dan foydalanish
try {
Thread.sleep(100); // 100 millisekundga to'xtatish
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
// yield() dan foydalanish
Thread.yield(); // bajarilishni o'tkazishga urinish