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(); // иштөө мүмкүнчүлүгүн берүү аракетинде