Vector
disinkronkan 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 ConcurrentModificationException
di 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 Vector
menggabungkan 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 Stack
setara - saya akan melihat Deque
/ ArrayDeque
mulai dengan.