Vector
her bir işlemde senkronize olur. Neredeyse asla yapmak istediğiniz şey bu değildir.
Genel olarak bir dizi işlemi senkronize etmek istersiniz . Tek tek işlemleri senkronize etmek hem daha az güvenlidir ( Vector
örneğin, bir yinelemeyi yinelerseniz , aynı anda başkalarının koleksiyonunu değiştirmesini önlemek için bir kilit çıkarmanız gerekir, bu ConcurrentModificationException
da yineleme iş parçacığında a'ya neden olur ) aynı zamanda daha yavaştır ( neden bir kez yeterli olduğunda tekrar tekrar bir kilit çıkar)?
Tabii ki, ihtiyacınız olmadığında bile kilitleme yüküne sahiptir.
Temel olarak, çoğu durumda senkronizasyon için çok kusurlu bir yaklaşımdır. As Bay Brian Henk işaret, arama kullanarak bir koleksiyon dekore edebilirsiniz gibi Collections.synchronizedList
- gerçeği Vector
birleştirir hem "her işlemi senkronize" biraz "boyutu değiştirilen dizi" koleksiyonu uygulama kötü tasarım başka bir örnektir; dekorasyon yaklaşımı endişelerin daha net ayrılmasını sağlar.
Stack
Eşdeğer bir gelince - ile başlamak Deque
/ bakmak istiyorum ArrayDeque
.