Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

ความแตกต่างระหว่างคอลเล็กชันดั้งเดิมและคอลเล็กชันพร้อมกันใน java


ใน Java เรารู้ว่า Collections เป็นหนึ่งในแนวคิดที่สำคัญที่สุดที่ทำให้ Java เป็นภาษาที่ทรงพลังในตัวเอง เป็นการสนับสนุนเฉพาะคอลเล็กชันใน Java ที่ทำให้สนับสนุนข้อมูลประเภทใดก็ได้ที่สะดวกและมีประสิทธิภาพควบคู่ไปกับการดำเนินการ CRUD ที่เป็นไปได้

แต่ในระยะเดียวกันเมื่อคอลเล็กชันสัมผัสกับมัลติเธรด ประสิทธิภาพของมันจะลดลงบ้างเนื่องจากบางคอลเลกชั่นขาดการรองรับสภาพแวดล้อมแบบมัลติเธรด เพื่อเอาชนะข้อจำกัดนี้ Java ขอแนะนำ Concurrent Collections ซึ่งไม่เพียงแต่เอาชนะข้อจำกัดของสภาพแวดล้อมแบบมัลติเธรดเท่านั้น แต่ยังปรับปรุง Java เพื่อดำเนินการกับข้อมูลเธรดหลายรายการ

ต่อไปนี้เป็นข้อแตกต่างที่สำคัญระหว่างคอลเล็กชันดั้งเดิมและคอลเล็กชันพร้อมกัน

Sr.No. คีย์ คอลเลกชันดั้งเดิม คอลเล็กชันพร้อมกัน
1 ความปลอดภัยของเธรด คลาสคลาสสิกส่วนใหญ่ใน Java Collections เช่น Array List, Linked List, Hash Map เป็นต้น จะไม่ซิงโครไนซ์และไม่ปลอดภัยสำหรับเธรดในสภาพแวดล้อมแบบมัลติเธรด ในทางกลับกัน Java แนะนำคลาสเดียวกันใน Concurrent Collections โดยใช้การซิงโครไนซ์ ซึ่งไม่เพียงทำให้คลาสเหล่านี้เป็น Synchronized แต่ยังเธรดปลอดภัยในธรรมชาติ
2 กลไกการล็อค เรามีคลาสที่ซิงโครไนซ์ในคอลเล็กชันดั้งเดิมเช่นกัน เช่น Vector และ Stack แต่คลาสเหล่านี้ใช้การล็อกทั้งคอลเล็กชัน ซึ่งลดประสิทธิภาพและความเร็วในการดำเนินการ ในทางกลับกัน คอลเลกชั่นพร้อมกันจะแนะนำแนวคิดของการล็อกบางส่วน ซึ่งจะล็อกเฉพาะบางส่วนของคอลเล็กชันในกรณีที่มีสภาพแวดล้อมแบบมัลติเธรดซึ่งช่วยปรับปรุงประสิทธิภาพและความเร็วของคอลเล็กชันในสภาพแวดล้อมดังกล่าว
3 ข้อยกเว้นรันไทม์ ในกรณีของคอลเล็กชันดั้งเดิม หากเราพยายามแก้ไขคอลเล็กชันผ่านเธรดที่แยกกันระหว่างการวนซ้ำคอลเลกชั่น เราก็จะได้รับ Runtime Exception ConcurrentModificationException ในทางกลับกัน บุคคลจะไม่ได้รับข้อยกเว้นดังกล่าว หากเกี่ยวข้องกับคอลเล็กชันที่เกิดขึ้นพร้อมกัน เช่น คอลเล็กชันพร้อมกันอนุญาตให้แก้ไขในคอลเล็กชันในระหว่างการทำซ้ำ
4 ค่ากำหนด เนื่องจากเหตุผลที่กล่าวถึงในประเด็นข้างต้น คอลเล็กชันแบบเดิมไม่เป็นที่นิยมในสภาพแวดล้อมแบบมัลติเธรด ในทางกลับกัน คอลเลกชั่นพร้อมกันนั้นต้องการใช้ในสภาพแวดล้อมแบบมัลติเธรดเป็นหลัก
5 บทนำในตลาด คอลเล็กชันแบบดั้งเดิมคือประเภทของคอลเล็กชันดั้งเดิมใน Java และเปิดตัวก่อนคอลเล็กชันที่เกิดขึ้นพร้อมกัน ในขณะที่แนะนำคอลเลกชันพร้อมกันใน JDK 1.5 นั่นคือแนะนำหลังจากคอลเลกชันดั้งเดิม