เธรดเวกเตอร์ปลอดภัยใน Java หรือไม่
เธรดเวกเตอร์ปลอดภัยใน Java หรือไม่

วีดีโอ: เธรดเวกเตอร์ปลอดภัยใน Java หรือไม่

วีดีโอ: เธรดเวกเตอร์ปลอดภัยใน Java หรือไม่
วีดีโอ: Thread Safety in Java 2024, อาจ
Anonim

เวกเตอร์ วิธีการทั้งหมดจะถูกซิงโครไนซ์ ดังนั้นใช้มันจากหลาย ๆ กระทู้ เป็น " ปลอดภัย " คุณต้องซิงโครไนซ์เฉพาะในกรณีที่คุณต้องการให้กระบวนการอ่าน-ประเมิน-เขียนเป็นอะตอมมิก การซิงโครไนซ์วิธีการของคุณเองไม่จำเป็นต้องสร้างโค้ดของคุณ เกลียว - ปลอดภัย สำหรับสถานการณ์เหล่านั้น

เมื่อพิจารณาสิ่งนี้แล้ว รายการเธรดปลอดภัยใน Java หรือไม่

อันที่จริง คลาสคอลเลกชันทั้งหมด (ยกเว้น Vector และ Hashtable) ใน จาวา . util package ไม่ได้ เกลียว - ปลอดภัย . นั่นเป็นเหตุผลที่ใหม่ ของสะสม ( รายการ , ตั้งค่า, แผนที่, ฯลฯ) ไม่ได้ให้การควบคุมการทำงานพร้อมกันเลยเพื่อให้มีประสิทธิภาพสูงสุดในแอปพลิเคชันแบบเธรดเดียว

คอลเลกชันใดที่เธรดปลอดภัยใน Java NS เกลียว - ปลอดภัย class เป็นคลาสที่รับประกันสถานะภายในของคลาสเช่นเดียวกับค่าที่ส่งคืนจากเมธอดที่ถูกต้องในขณะที่เรียกใช้จากหลาย ๆ อันพร้อมกัน กระทู้ . NS ของสะสม ชั้นเรียนที่ เกลียว - ปลอดภัยในชวา ได้แก่ Stack, Vector, Properties, Hashtable เป็นต้น

เมื่อคำนึงถึงสิ่งนี้ เธรด Java HashSet ปลอดภัยหรือไม่

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

ArrayList หรือ vector ที่ปลอดภัยสำหรับเธรดใด

เวกเตอร์ ช้าเหมือนเดิม ปลอดภัยต่อด้าย . ในการเปรียบเทียบ ArrayList รวดเร็วเนื่องจากไม่มีการซิงโครไนซ์ ดังนั้นใน ArrayList สองคนขึ้นไป กระทู้ สามารถเข้าถึงรหัสได้พร้อมกันในขณะที่ เวกเตอร์ ถูกจำกัดไว้เพียงคนเดียว เกลียว ขณะนั้น. NS เวกเตอร์ ค่าเริ่มต้นเป็นสองเท่าของขนาดอาร์เรย์

แนะนำ: