Sobes.tech
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() oqimni Timed Waiting (yoki Waiting va timeout bilan) holatiga o'tkazadi. yield() oqimni Runnable holatiga 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