การ เข้าใจ แบบ อย่าง ความ จํา ของ ชวา: ตัว อย่าง ที่ ใช้ ได้ จริง และ ประเด็น ทั่ว ไป
โปรแกรม March ของ Java (JMM) กําหนดวิธีทําเธรดในจาวา โต้ตอบผ่านหน่วยความจํา มันอธิบายว่าการเปลี่ยนแปลงของเธรดใดบ้างที่ถูกสร้างจากเส้นหนึ่ง จะมองเห็นได้กับผู้อื่นได้อย่างไร การเข้าใจ JMM เป็นสิ่งจําเป็นสําหรับการเขียนโปรแกรมจาวาที่ถูกต้อง และหลีกเลี่ยงประเด็นทั่วไป เช่น การสงวนข้อมูลและปัญหาที่ปรากฏแจ้ง
พื้นฐานของหน่วยความจําจาวา
The JMM กําหนดกฏสําหรับวิธีที่เธรดอ่านและเขียนตัวแปรร่วมกัน เพื่อให้แน่ใจว่าการดําเนินการเป็นอะตอม และมีการรับประกันว่าการเปลี่ยนแปลงจะข้ามเธรดได้
ตัว อย่าง ที่ ใช้ ได้ จริง
ลอง พิจารณา ตัว อย่าง ง่าย ๆ ที่ เธรด หนึ่ง ปรับ ปรุง ความ เข้าใจ ของ ตัวแปร ที่ ใช้ ร่วม กัน และ เธรด อื่น ๆ ที่ อ่าน กัน.
ประเด็น และ วิธี แก้ ที่ มี อยู่ ทั่ว ไป
- [FLT: 0] Data Rations: Occur (Occcur) เมื่อหลายเธรดแก้ไขข้อมูลร่วมกันโดยไม่ปรับเทียบข้อมูล ใช้บล็อกหรือคลาสอะตอมเพื่อป้องกันการถูกขัดจังหวะนี้
- [FLT: 0] ปัญหาการแยกแยะ: การเปลี่ยนแปลงที่สร้างขึ้นโดยเส้นด้ายหนึ่งไม่สามารถมองเห็นได้กับตัวแปรร่วมกัน Volatile หรือใช้การประสานกันโดยตรง
- [FLT: 0] เรียงใหม่: Commiler หรือ CPU recorder order can ก่อให้เกิดพฤติกรรมที่ไม่คาดคิด. การปรับเทียบข้อมูลที่เหมาะสม ป้องกันไม่ให้มีการเรียงปัญหาซ้ํา