SORU
6 EYLÜL 2009, Pazar


Neden Java Vector sınıfı eski veya kullanım dışı olarak kabul edilir?

Neden Java Vektör eski bir sınıf olarak kabul edilir, eski veya kullanım dışı mı?

Kullanımı eşzamanlılık ile çalışırken geçerli değil mi?

Ve istemiyorsam için el ile eşitleme nesneleri ve sadece bir iş parçacığı için güvenli toplama olmadan ihtiyacı olun temiz kopya alttaki dizinin (CopyOnWriteArrayList), o zaman iyi kullanın Vector?

Ne Vector, Ne bir alt sınıfı olan Stack, bunun yerine kullanmalıyım?

CEVAP
6 EYLÜL 2009, Pazar


Vector Her bir işlem üzerinde eşitler. O ne yapmak istediğini hemen hemen hiç.

Genellikle eşitlemek istiyorbütün sıraoperasyonların. Eşitleme bireysel işlemler hem daha güvenli (eğer üzerinde yineleme Vector mesela, hala Alman gereken bir kilit önlemek için herkesten değişen koleksiyon aynı anda, neden olur ConcurrentModificationException yineleme thread) ama yavaş (neden çıkar kilit defalarca kez ne zaman olacak yeter)?

Tabii ki, o da gerek yok hatta kilitleme yükü vardır.

Aslında, çoğu durumda, eşitleme için çok hatalı bir yaklaşım. GibiBay Brian Henkişaret, süslemek bir koleksiyon kullanarak çağrıları gibi Collections.synchronizedList gerçek Vector birleştirir hem de "yeniden boyutlandırılan dizinin" toplama uygulaması ile "senkronize her operasyon" bit başka bir örnek, kötü tasarım, dekorasyon yaklaşımı verir temiz ayrılık ile ilgilidir.

Stack bir karşılığı olarak - Deque/ArrayDeque at ile başlamak bakardım.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Mark Brown

    Mark Brown

    9 HAZİRAN 2010
  • Munchkin the Teddy Bear

    Munchkin the

    30 EYLÜL 2011
  • WK

    WK

    9 Ocak 2006