Vector
ประสานในการดำเนินงานของแต่ละบุคคล นั่นแทบไม่เคยเป็นสิ่งที่คุณต้องการจะทำ
โดยทั่วไปคุณต้องการซิงโครไนซ์ลำดับของการดำเนินการทั้งหมด การซิงโครไนซ์แต่ละการดำเนินการมีความปลอดภัยน้อยกว่า (ถ้าคุณวนซ้ำมากกว่า a Vector
คุณยังต้องทำการล็อกเพื่อหลีกเลี่ยงการเปลี่ยนคอลเลกชันในเวลาเดียวกันซึ่งจะทำให้เกิดConcurrentModificationException
การวนซ้ำในเธรด) แต่ก็ช้าลงด้วย เหตุใดจึงต้องปลดล็อคซ้ำ ๆ เมื่อหนึ่งครั้งจะเพียงพอ)
แน่นอนว่ามันยังมีค่าใช้จ่ายในการล็อคแม้ว่าคุณไม่จำเป็นต้อง
โดยทั่วไปมันเป็นวิธีการที่มีข้อบกพร่องอย่างมากในการซิงโครไนซ์ในสถานการณ์ส่วนใหญ่ ดังที่นาย Brian Henkชี้ให้เห็นคุณสามารถตกแต่งคอลเลกชันโดยใช้การเรียกเช่นCollections.synchronizedList
- ความจริงที่Vector
รวมทั้งการปรับใช้คอลเลกชัน "ปรับขนาดอาร์เรย์" กับบิต "ซิงโครไนซ์ทุกการทำงาน" เป็นอีกตัวอย่างของการออกแบบที่ไม่ดี วิธีการตกแต่งช่วยให้แยกความกังวลได้ง่ายขึ้น
ในฐานะที่Stack
เทียบเท่า - ฉันดูDeque
/ ArrayDeque
เริ่มต้นด้วย