SORU
14 Kasım 2008, Cuma


Java nasıl bir iş parçacığı başka bir iş parçacığı'çıkış s bekletmek?

Uygulama-mantık-iplik ve bir veritabanı erişim iş parçacığı için bir Java uygulaması yapıyorum. Her ikisi de uygulama kullanım süresi boyunca devam etmektedir. Ancak, başlangıçta app db iplik iplik hazır (şu anda yoklama özel bir yöntem dbthread.isReady()tarafından belirlenen) bekler emin olmak istiyorum. Eğer db iplik kadar uygulama iş parçacığı blokları hazır olsaydı benim için sorun olmazdı.

Thread.join() çözüm - uygulama kapatma sırasında db iplik tek çıkar benzemiyor.

while (!dbthread.isReady()) {} işe yarıyor, ama boş döngü işlemci döngüsü tüketir.

Başka fikri olan? Teşekkürler.

CEVAP
14 Kasım 2008, Cuma


Gerçekten çoklu büyülü dünyasında başlamadan önce Sun's Java Concurrency gibi bir öğretici ile gitmek tavsiye ederim.

Aynı zamanda iyi bir kitap vardır (Google'da "Java Eşzamanlı Programlama", "Uygulamada Java Eşzamanlılık".

Cevabınız için:

Kodunda böyle bir şey olması gerekir dbThread beklemek gerekir:

//do some work
synchronized(objectYouNeedToLockOn){
    while (!dbThread.isReady()){
        objectYouNeedToLockOn.wait();
    }
}
//continue with work after dbThread is ready

**8'in yöntemi, olur böyle şeyler yapmak lazım:

//do db work
synchronized(objectYouNeedToLockOn){
    //set ready flag to true (so isReady returns true)
    ready = true;
    objectYouNeedToLockOn.notifyAll();
}
//end thread run method here

objectYouNeedToLockOn kullanıyorum bu örneklerde olduğu tercihen nesne gerekir işlemek için aynı anda her iş parçacığı, ya da sen-ebil yaratmak ayrı Object Bu amaçla (olmaz tavsiye verme yöntemleri kendilerini senkronize):

private final Object lock = new Object();
//now use lock in your synchronized blocks

Daha anlayışınız için:
Bazen de daha yukarıda, örneğin CountdownLatches, vb yapmak için başka yolları da vardır. Java 5'den beri java.util.concurrent paketinde şık eşzamanlılık pek çok ders ve paketler alt. Gerçekten malzeme online eşzamanlılık olduğunu, ya da iyi bir kitap almak için bulmalıyız.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • dougownsall

    dougownsall

    7 EKİM 2007
  • Joseph Herscher

    Joseph Hersc

    14 Mart 2007
  • RiverCityGraphix

    RiverCityGra

    6 Ocak 2012