เราสามารถใช้ hashmap ในสภาพแวดล้อมแบบมัลติเธรดได้หรือไม่

สารบัญ:

เราสามารถใช้ hashmap ในสภาพแวดล้อมแบบมัลติเธรดได้หรือไม่
เราสามารถใช้ hashmap ในสภาพแวดล้อมแบบมัลติเธรดได้หรือไม่
Anonim

เกิดอะไรขึ้นกับ HashMap ในสภาพแวดล้อมแบบมัลติเธรด … เป็นปัญหาหากมีการเพิ่มหลายเธรดในอินสแตนซ์ HashMap เดียวกันโดยไม่มี กำลังซิงโครไนซ์ แม้ว่าจะมีเพียง 1 เธรดที่กำลังแก้ไข HashMap และเธรดอื่นๆ กำลังอ่านจากแผนที่เดียวกันนั้นโดยไม่มีการซิงโครไนซ์ คุณก็จะประสบปัญหา

คุณสามารถใช้ HashMap ในสภาพแวดล้อมแบบมัลติเธรดได้หรือไม่

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

ทำไมไม่ควรใช้ HashMap ในสภาพแวดล้อมแบบมัลติเธรด มันสามารถทำให้เกิดลูปอนันต์ได้เช่นกัน?

ความจุเริ่มต้นของ HashMap คือ 16 และตัวประกอบการโหลดคือ 0.75 ซึ่งหมายความว่า HashMap จะเพิ่มความจุเป็นสองเท่าเมื่อคู่คีย์-ค่าที่ 12 เข้ามาในแผนที่ (160.75=12) เมื่อ 2 เธรดพยายามเข้าถึง HashMap พร้อมกัน คุณอาจพบกับการวนซ้ำที่ไม่สิ้นสุด เธรดที่ 1 และเธรดที่ 2 พยายามวางคู่คีย์-ค่าที่ 12

HashMap ทำให้เธรดปลอดภัยหรือไม่

HashMap ไม่มีการซิงโครไนซ์ ไม่ปลอดภัยสำหรับเธรด และไม่สามารถแชร์ระหว่างหลายเธรดโดยไม่มีรหัสการซิงโครไนซ์ที่เหมาะสมในขณะที่ Hashtable ถูกซิงโครไนซ์

อะไรจะเหมาะที่สุดสำหรับมัลติเธรดสิ่งแวดล้อม?

คำตอบคือ "ConcurrentHashMap"

บทความที่น่าสนใจ
ฟอสซิลเกิดขึ้นที่ไหน?
อ่านเพิ่มเติม

ฟอสซิลเกิดขึ้นที่ไหน?

ฟอสซิลก่อตัวขึ้นในรูปแบบต่างๆ แต่ส่วนใหญ่จะก่อตัว เมื่อพืชหรือสัตว์ตายในสภาพแวดล้อมที่เป็นน้ำและถูกฝังในโคลนและตะกอน เนื้อเยื่ออ่อนจะย่อยสลายอย่างรวดเร็วโดยทิ้งกระดูกหรือเปลือกแข็งไว้เบื้องหลัง เมื่อเวลาผ่านไป ตะกอนจะก่อตัวบนยอดและแข็งตัวเป็นหิน ฟอสซิลส่วนใหญ่อยู่ที่ไหน ซากดึกดำบรรพ์ส่วนใหญ่จะพบในบริเวณที่มีหินตะกอนที่มีอายุที่เหมาะสม ซึ่งสำหรับไดโนเสาร์คือมีโซโซอิก สถานที่ที่ดีที่สุดคือ หุบเขาแม่น้ำ หน้าผาและเนินเขา และสิ่งที่มนุษย์สร้างขึ้น เช่น เหมืองหินและการตัดถนน

ตัวรับส่งสัญญาณทนความผิดพลาดได้ไหม
อ่านเพิ่มเติม

ตัวรับส่งสัญญาณทนความผิดพลาดได้ไหม

The TJA1055T เป็นตัวรับส่งสัญญาณ CAN ขั้นสูงที่ทนทานต่อข้อผิดพลาดซึ่งมีจุดประสงค์หลักสำหรับการใช้งานความเร็วต่ำสูงสุด 125kBd ในรถยนต์นั่งส่วนบุคคล นอกจากความสามารถในการรับและส่งที่แตกต่างกันแล้ว ตัวรับส่งสัญญาณยังมีตัวส่งและ/หรือตัวรับแบบสายเดี่ยวในสภาวะที่ผิดพลาด ไดรเวอร์ CAN และตัวรับส่งสัญญาณ CAN ได้ไหม โมดูลไดรเวอร์ตัวรับส่งสัญญาณ CAN คือ รับผิดชอบในการจัดการชิปฮาร์ดแวร์ตัวรับส่งสัญญาณ CAN บน ECU ตัวรับส่งสัญญาณ CAN เป็นอุปกรณ์ฮาร์ดแวร์ที่ปรับระดับสัญญาณที่ใช้บนบัส

ทำไมไรอัน บลานีย์ถึงเรียกว่า yrb?
อ่านเพิ่มเติม

ทำไมไรอัน บลานีย์ถึงเรียกว่า yrb?

ในกระทู้ Twitter วันพุธ Wallace ให้รายละเอียดการพบปะของเขาในวันอังคารกับ Blaney ซึ่งเป็นหนึ่งในเพื่อนสนิทของเขาใน NASCAR (ด้วยเหตุนี้ Wallace จึงเรียกชื่อเล่นว่า “YRB” ซึ่งย่อมาจาก “Young” Ryan Blaney”). ไรอัน บลานีย์ เดฟ บลานีย์ ลูกชายหรือเปล่า Ryan Michael Blaney (เกิด 31 ธันวาคม 1993) เป็นนักแข่งรถสต็อกมืออาชีพชาวอเมริกัน … เขาคือ ลูกชายของ อดีตนักแข่ง NASCAR Dave Blaney และหลานชายของ Lou Blaney ในตำนานแห่งสนามวิบากดัดแปลง Ryan Blaney มีรอยสักกี่อัน?