ใครจะกรุณาอธิบายให้ฉันความแตกต่างระหว่างSleeping
, Wait
, Park
และMonitor
รัฐตั้งกระทู้ใน VisualVM
นี่คือสิ่งที่ฉันพบ:
Running
: thread ยังคงทำงานอยู่
Sleeping
: thread is sleeping (method yield () ถูกเรียกบนอ็อบเจ็กต์เธรด)
Wait
: เธรดถูกบล็อกโดย mutex หรือสิ่งกีดขวางและกำลังรอให้เธรดอื่นคลายการล็อก
Park
เธรดที่จอดอยู่จะถูกระงับจนกว่าจะได้รับอนุญาต โดยปกติแล้วการยกเลิกการจอดเธรดทำได้โดยการเรียกเมธอด uncark () บนอ็อบเจ็กต์เธรด
Monitor
: เธรดกำลังรอเงื่อนไขที่จะเป็นจริงเพื่อดำเนินการต่อ
สิ่งที่ฉันไม่เข้าใจคือสวนสาธารณะสิ่งที่ระงับเธรดจริงหรือ? ฉันจะตรวจจับโค้ดที่ทำให้เธรดระงับการทำงานได้อย่างไร
ใครช่วยแนะนำฉันในเรื่องนี้
ขอบคุณ.