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

  • Julian Smith

    Julian Smith

    31 EKİM 2006
  • kruno j

    kruno j

    6 Mayıs 2007
  • TheMasterOfHell100

    TheMasterOfH

    13 AĞUSTOS 2011