วิธีสร้าง Java Deadlock โดยทางโปรแกรมและวิธีวิเคราะห์ Deadlock

เผยแพร่แล้ว: 2013-07-03

ตัวอย่างการล็อกเธรด Java โดย Crunchify

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

ที่นี่ฉันได้เขียนโปรแกรมง่าย ๆ ที่จะทำให้เกิดสถานการณ์การหยุดชะงักแล้วเราจะดูวิธีวิเคราะห์มัน

นี่คือตัวอย่าง Java อย่างง่าย:

เอาท์พุท:

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

ตัวอย่างเช่น บน Mac คุณสามารถ Ctrl-\ หรือเพียงแค่ใช้ jstack และ process id เพื่อรับ thread dump ซึ่งทำให้เห็นได้ชัดเจนว่าการชะงักงันอยู่ที่ไหน

ในตัวอย่างนี้ ดัมพ์เธรดจะมีลักษณะดังนี้:

สังเกตเห็นที่นี่ threads => Deadlock ที่นี่ .. ในตัวอย่างต่อไปจะมีโปรแกรม Java อย่างง่ายเพื่อสร้างการถ่ายโอนข้อมูลเธรดด้านบนโดยทางโปรแกรม