Middle
Thread.sleep() və Thread.yield() metodları arasındakı fərq nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Thread.sleep() carişdirilən müddət üçün cari iş parçacığını dayandırır və onu Timed Waiting vəziyyətinə keçirir. O, CPU-nu digər iş parçacıqlarına vermir. Thread.yield() isə cari iş parçacığına, eyni və ya daha yüksək prioritetə malik digər iş parçacılarına müvəqqəti olaraq icra etməyi təhvil verməyə hazır olduğunu bildirir, lakin bunun baş verəcəyinə zəmanət vermir. yield() iş parçacığını Runnable vəziyyətinə keçirir.
Əsas fərqlər:
- Müddət:
sleep()müəyyən edilmiş müddət üçün dayandırmanı təmin edir.yield()nə idarəetmənin verilməsini, nə də dəqiq fasilə müddətini təmin edir. - İş parçacığının vəziyyəti:
sleep()iş parçacığınıTimed Waiting(və yaWaitingilə timeout) vəziyyətinə keçirir.yield()iş parçacığınıRunnablevəziyyətinə keçirir. - Təyinat:
sleep()gecikmələr yaratmaq üçün istifadə olunur.yield()digər iş parçacıklarının icrasına imkan vermək üçün istifadə olunur, xüsusən döngülərdə CPU-nun monopoliyasını önləmək üçün. - Planlayıcı:
sleep()planlayıcıya təsir etmir (yalnız iş parçacığı aktiv deyil).yield()planlayıcı üçün tövsiyədir.
İstifadə nümunəsi:
// sleep() istifadə
try {
Thread.sleep(100); // 100 millisekund dayandırma
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
// yield() istifadə
Thread.yield(); // icra etməyi təhvil verməyə cəhd