Middle
Thread.sleep() ve Thread.yield() metodları arasındaki farklar nelerdir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Thread.sleep() mevcut iş parçacığını belirli bir süre duraklatır ve onu Timed Waiting durumuna geçirir. CPU'yu diğer iş parçacıklarına bırakmaz. Thread.yield() ise mevcut iş parçacığına, aynı veya daha yüksek önceliğe sahip diğer iş parçacıklarına geçici olarak yürütmeyi devretmeye hazır olduğunu bildirir, ancak bunun gerçekleşeceğine dair garanti vermez. yield() iş parçacığını Runnable durumuna geçirir.
Ana farklar:
- Süre:
sleep()belirli bir süre boyunca duraklamayı garanti eder.yield()kontrolü devretmeyi veya belirli bir duraklama süresi garantilemez. - İş parçacığı durumu:
sleep()iş parçacığınıTimed Waiting(veya zaman aşımıylaWaiting) durumuna geçirir.yield()iş parçacığınıRunnabledurumuna geçirir. - Amacı:
sleep()gecikme eklemek için kullanılır.yield()diğer iş parçacıklarının yürütülmesine izin vermek için kullanılır, özellikle döngülerde CPU'nun tekelleşmesini önlemek için. - Planlayıcı:
sleep()planlayıcıyı etkilemez (sadece iş parçacığı aktif değil).yield()planlayıcıya bir ipucudur.
Kullanım örneği:
// sleep() kullanımı
try {
Thread.sleep(100); // 100 milisaniye duraklama
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
// yield() kullanımı
Thread.yield(); // yürütmeyi devretmeye çalışma