Vectordisinkronkan pada setiap operasi individu. Itu hampir tidak pernah ingin Anda lakukan.
Secara umum Anda ingin menyinkronkan seluruh urutan operasi. Menyinkronkan masing-masing operasi kurang aman (jika Anda beralih pada Vector, misalnya, Anda masih perlu mengeluarkan kunci untuk menghindari orang lain mengubah koleksi pada saat yang sama, yang akan menyebabkan a ConcurrentModificationExceptiondi utas pengulangan) tetapi juga lebih lambat ( mengapa mengambil kunci berulang kali ketika sekali sudah cukup)?
Tentu saja, itu juga memiliki penguncian bahkan ketika Anda tidak perlu.
Pada dasarnya, ini adalah pendekatan yang sangat cacat untuk sinkronisasi dalam sebagian besar situasi. Seperti yang ditunjukkan oleh Tuan Brian Henk , Anda dapat menghias koleksi menggunakan panggilan seperti Collections.synchronizedList- fakta yang Vectormenggabungkan implementasi koleksi "array yang diubah ukurannya" dengan bit "sinkronisasi setiap operasi" adalah contoh lain dari desain yang buruk; pendekatan dekorasi memberikan pemisahan keprihatinan yang lebih bersih.
Adapun Stacksetara - saya akan melihat Deque/ ArrayDequemulai dengan.