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

  • Howard Pinsky

    Howard Pinsk

    6 AĞUSTOS 2006
  • Jared Busch

    Jared Busch

    25 Mayıs 2011
  • Keith Anthe

    Keith Anthe

    26 NİSAN 2011