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

  • Adam Washington

    Adam Washing

    12 Mayıs 2006
  • BDGcustoms

    BDGcustoms

    24 NİSAN 2011
  • efaustus9

    efaustus9

    16 HAZİRAN 2006