จอภาพที่อ้างถึงในการเขียนโปรแกรมพร้อมกันใน Java คืออะไร?
เมื่ออ่านพบว่า "ทุกวัตถุเชื่อมโยงกับจอภาพ" หมายความว่าอย่างไร
เป็นวัตถุพิเศษหรือไม่?
จอภาพที่อ้างถึงในการเขียนโปรแกรมพร้อมกันใน Java คืออะไร?
เมื่ออ่านพบว่า "ทุกวัตถุเชื่อมโยงกับจอภาพ" หมายความว่าอย่างไร
เป็นวัตถุพิเศษหรือไม่?
คำตอบ:
จอภาพเป็นกลไกในการควบคุมการเข้าถึงวัตถุพร้อมกัน
สิ่งนี้ช่วยให้คุณทำ:
หัวข้อที่ 1:
public void a()
{
synchronized(someObject) {
// do something (1)
}
}
หัวข้อที่ 2:
public void b()
{
synchronized(someObject) {
// do something else (2)
}
}
ซึ่งจะป้องกันไม่ให้เธรด 1 และ 2 เข้าถึงส่วนที่ตรวจสอบ (ซิงโครไนซ์) ในเวลาเดียวกัน หนึ่งจะเริ่มต้นและการตรวจสอบจะป้องกันไม่ให้อีกคนเข้าถึงภูมิภาคก่อนที่อันแรกจะเสร็จสิ้น
ไม่ใช่วัตถุพิเศษ java.lang.Object
กลไกการประสานของมันอยู่ที่รากลำดับชั้น:
นอกจากนี้ยังมีwait
และnotify
วิธีการที่จะใช้จอภาพของวัตถุเพื่อสื่อสารระหว่างเธรดต่างๆ
Class
อ็อบเจ็กต์ที่เกี่ยวข้องสำหรับเมธอดแบบคงที่ หากคุณมี method1 () ที่ซิงโครไนซ์อยู่แล้วและคุณประกาศว่า method2 () ซิงโครไนซ์จะไม่มีการสร้างจอภาพใหม่ขึ้นมาและในความเป็นจริงแล้วการเรียกใช้วิธีใดวิธีหนึ่ง (บนวัตถุเดียวกัน) จะพยายามล็อกจอภาพเดียวกัน สิ่งนี้มักจะดึงดูดผู้มาใหม่
จอภาพเป็นนิติบุคคลที่มีคุณสมบัติทั้งหนึ่งล็อคและชุดรอ ใน Java Object
สามารถใช้เป็นจอภาพได้
สำหรับคำอธิบายโดยละเอียดเกี่ยวกับวิธีการทำงานของจอภาพใน Java ฉันขอแนะนำให้อ่านส่วนMonitor Mechanicsของการเขียนโปรแกรมพร้อมกันใน Java (ลิงก์ก่อนหน้านี้แสดงตัวอย่างใน Google หนังสือและส่วนนั้นพร้อมให้อ่าน)
Wakes up all threads that are waiting on this object's monitor.
เกี่ยวกับการแจ้งเตือน () สิ่งที่ฉันได้รับคือการบำรุงรักษาวัตถุ (ด้วยความช่วยเหลือของเอนทิตี / วัตถุภายใน) สิ่งที่เธรดทั้งหมดกำลังรอการล็อกเอนทิตี / อ็อบเจ็กต์ภายในนั้นเรียกว่ามอนิเตอร์?
ภาษา Java และระบบรันไทม์สนับสนุนการซิงโครไนซ์เธรดผ่านการใช้จอภาพ
มอนิเตอร์เชื่อมโยงกับรายการข้อมูลเฉพาะ (ตัวแปรเงื่อนไข) และทำหน้าที่ล็อกข้อมูลนั้น เมื่อเธรดเก็บมอนิเตอร์สำหรับรายการข้อมูลบางรายการเธรดอื่นจะถูกล็อกและไม่สามารถตรวจสอบหรือแก้ไขข้อมูลได้
http://java.sun.com/docs/books/jvms/second_edition/html/Concepts.doc.html#33308
กลไกการควบคุมการเข้าถึงวัตถุหนึ่งที่เวลา
Monitor เป็นโครงสร้างการซิงโครไนซ์ที่อนุญาตให้เธรดมีทั้งการยกเว้นซึ่งกันและกันและความสามารถในการรอ (บล็อก) เพื่อให้เงื่อนไขบางอย่างกลายเป็นจริง
มอนิเตอร์ยังมีกลไกในการส่งสัญญาณเธรดอื่น ๆ ว่าตรงตามเงื่อนไขแล้ว เป็นหน่วยงานที่มีทั้งล็อคและชุดรอ ใน Java Object ใด ๆ สามารถใช้เป็นจอภาพได้
ในเครื่องเสมือน Java ทุกอ็อบเจ็กต์และคลาสจะเชื่อมโยงกับมอนิเตอร์ ในการใช้ความสามารถในการยกเว้นร่วมกันของจอภาพการล็อก (บางครั้งเรียกว่า mutex) จะเชื่อมโยงกับแต่ละอ็อบเจ็กต์และคลาส สิ่งนี้เรียกว่าเซมาฟอร์ในเงื่อนไขระบบปฏิบัติการ mutex เป็นเซมาฟอร์ไบนารี
http://journals.ecs.soton.ac.uk/java/tutorial/java/threads/monitors.html
มอนิเตอร์เชื่อมโยงกับอ็อบเจ็กต์หรือสมาชิกข้อมูลซึ่งจะได้มาเมื่อมีการป้อนข้อมูลสมาชิกหรืออ็อบเจ็กต์คือบล็อกซิงโครไนซ์ (ส่วนวิกฤต) และปล่อยเมื่อออก