SORU
19 AĞUSTOS 2009, ÇARŞAMBA


Uygulamaları Java Sırası hangisi?

Javadoc:

  • ConcurrentLinkedQueue bir çok iş parçacığı ortak bir koleksiyona erişim paylaşacak zaman uygun bir seçimdir. Bu sıra boş öğeleri izin vermez.
  • ArrayBlockingQueue klasik bir "tampon" dizisi yapımcıları tarafından eklenen tutar ve tüketiciler ile elde edilir., bir sabit boyutlu çevrilidir Bu sınıf bekleyen üretici ve tüketici konuları sipariş için isteğe bağlı adalet ilkesini destekler
  • LinkedBlockingQueue genellikle dizi tabanlı sıralar ama en eşzamanlı uygulamalarda daha az tahmin edilebilir performans daha yüksek verimlilik.

2 senaryo var, bir sıra, bir tüketici ile birçok üretici (iş parçacığı kullanarak) desteği gerektirir ve diğer etrafında başka yoludur.

ConcurrentLikedQueue veya diğerleri (Dizi veya linkedList uygulamaları) kullanımı olup olmadığını anlamak değilim. Bütün bu eşzamanlı olması gereken uygulamalar? Wherent Yani, birileri ConcurrentLikedQueue ve LinkedBlockingQueue arasındaki fark nedir bana açıklayabilir mi ?

Ayrıca, ArrayBlockingQueue isteğe bağlı adalet ilkesi şey nedir acaba ?

Çok teşekkürler !

CEVAP
19 AĞUSTOS 2009, ÇARŞAMBA


ConcurrentLinkedQueue kilit yok (senkronize(bu) veya Lock.lock çağrıları gibi) alındığı anlamına gelir. Eğer kuyruk düğümü/kafası hala başladığında aynı olup olmadığını görmek için değişiklikleri sırasında CAS - Compare and Swap kullanacaktır. Bu durumda, işlem başarılı. Eğer kafa/kuyruk düğümü farklı ise, dönün ve tekrar deneyin.

LinkedBlockingQueue herhangi bir değişiklik daha önce bir kilit alacak. Bu yüzden teklif aramalarınızı kilit gelene kadar engellenebilir. Kullanabilirsiniz teklifi aşırı yük alır bir TimeUnit demek sadece istekli bekleyin X süre önce terk Ekle (genellikle iyi için mesaj yazın sıralara nereye mesaj eskiyen sonra sayısı X milisaniye).

Adalet Kilit uygulaması, iş emri tutmak anlamına gelir. Eğer Bir iş Parçacığı girerse anlam ve B Parçacığı, iş Parçacığı Bir kilidi ilk alacak girer. Hiç adil olur gerçekten tanımsız. Büyük ihtimalle planlanmış alır bir sonraki iş parçacığı olacaktır.

Kullanılacak gibi, duruma göre değişir. Çalışma sırasında üzerine koymak için yapımcılar zaman farklı olduğundan ConcurrentLinkedQueue Kullanma eğilimindedir. Yapımcılar aynı anda üreten bir şeyim yok. Ama tüketici tarafında anket güzel bir uyku durumuna girmeyeceğim çünkü daha karmaşıktır. Bunun üstesinden Kendin yapmalısın.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Amir Parmar

    Amir Parmar

    25 Kasım 2010
  • IGN

    IGN

    19 EYLÜL 2006
  • vgeller1

    vgeller1

    22 Kasım 2009