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

  • AceHoodVEVO

    AceHoodVEVO

    12 Mayıs 2009
  • chrmoe

    chrmoe

    7 Kasım 2006
  • LardTardProductions's channel

    LardTardProd

    10 NİSAN 2009