Bekleyin arasındaki fark() ve sleep()
wait()
ve İpler sleep()
arasındaki fark nedir?
*İng*5 Parçacığı çalışmaya modunda ve CPU döngüsü kullanır ama sleep()
-ıng herhangi bir CPU döngülerini tüketebilir bir benim anladığım, doğru mu?
Neden varher ikisi dewait()
sleep()
: nasıl bunların uygulanması daha düşük bir düzeyde değişir mi?
CEVAP
wait
"sleep
bir kısmı ise servis ediliyor monitörde notify
arıyor. başka bir işlem ile uyandı olabilir wait
(notify
) bir blok olması gerek bir de monitör synchronized
sleep
değil ise nesne:
Object mon = ...;
synchronized (mon) {
mon.wait();
}
Bu noktada şu anda çalışan iş parçacığı beklerve monitör bültenleri. Başka bir iş parçacığı olabilir
synchronized (mon) { mon.notify(); }
(mon
aynı nesne üzerinde) ve ilk iş parçacığı (tek iplik monitörde bekliyor varsayarak) uyanacak.
Ayrıca eğer birden fazla iş parçacığı monitörde bekliyorsa notifyAll
diyebilirsiniz - bu uyanacakhepsini kurun. Ancak, sadece bir iş yapabilir kapmak monitör (hatırladığım wait
synchronized
blok) ve devam - Diğerleri olacak o zaman kadar bloke edebilirler elde monitörün kilit.
Bir başka nokta Thread
sleep
diyorsunuz, oysa Object
kendisi (yani nesne monitörde bekle) wait
demeniz.
Bir başka nokta alabilirsinizsahte wakeupswait
(sebepsiz yere özgeçmiş bekleyen iş parçacığı yani. Gerekirher zaman wait
bazı şartla iplik ikenaşağıdaki gibi
synchronized {
while (!condition) { mon.wait(); }
}
Px, dp, arasındaki fark ve Android dip...
'dizi arasındaki fark ne ve dize?...
İÇ ve DIŞ birleşimler arasındaki fark...
Bir URI, URL ve URN arasındaki fark ne...
Aramak ve uygulamak arasındaki fark ne...