SORU
24 HAZİRAN 2009, ÇARŞAMBA


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
24 HAZİRAN 2009, ÇARŞAMBA


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(); }
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Awesomesauce Network

    Awesomesauce

    4 EKİM 2012
  • NYLON Video

    NYLON Video

    11 Aralık 2006
  • XxMinayaxX1

    XxMinayaxX1

    9 Mayıs 2012