วิธีจัดการ Deadlock ใน Java



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

รองรับภาษาโปรแกรม Java . มันเกี่ยวข้องกับหลายเธรดที่ทำงานพร้อมกันสำหรับการทำงานหลายอย่างพร้อมกัน แต่ในบางกรณีหรือเนื่องจากข้อบกพร่องบางอย่างเธรดพบว่าตัวเองอยู่ในสถานะรอตลอดไป ในบทความนี้เราจะทำความเข้าใจกับสภาวะชะงักงันใน และวิธีต่างๆในการหลีกเลี่ยง ต่อไปนี้เป็นหัวข้อที่กล่าวถึงในบล็อกนี้:

Deadlock ใน Java คืออะไร?

Deadlock ใน Java คือเงื่อนไขที่เธรดตั้งแต่สองเธรดขึ้นไปถูกบล็อกตลอดไปโดยรอกันและกัน





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

ทำให้เธรดการดำเนินการบล็อกในขณะที่รอการล็อกหรือมอนิเตอร์ที่เชื่อมโยงกับที่ระบุ วัตถุ .



แปลงเป็นไบนารีใน python

Deadlock ใน Java - Edureka

ตัวอย่างการหยุดชะงัก

คลาสสาธารณะตัวอย่าง {public static void main (String [] args) {final String r1 = 'edureka' final String r2 = 'java' Thread t1 = new Thread () {public void run () {synchronized (r1) {System. out.println ('เธรด 1: ล็อก r1') ลองใช้ {Thread.sleep (100)} catch (ข้อยกเว้น e) {} ซิงโครไนซ์ (r2) {System.out.println ('เธรด 1: ล็อค r2')}}} } เธรด t2 = เธรดใหม่ () {การรันโมฆะสาธารณะ () {ซิงโครไนซ์ (r1) {System.out.println ('เธรด 2: ล็อก r1') ลอง {Thread.sleep (100)} จับ (ข้อยกเว้น e) {} ซิงโครไนซ์ (r2) {System.out.println ('เธรด 2: ล็อก r2')}}}} t1.start () t2.start ()}}
 เอาท์พุต: เธรด 1: ล็อค r1 เธรด 2: ล็อค r2

วิธีหลีกเลี่ยง Deadlock ใน Java

แม้ว่าจะไม่สามารถหลีกเลี่ยงภาวะชะงักงันได้อย่างสมบูรณ์ แต่เราสามารถปฏิบัติตามมาตรการหรือคำแนะนำบางอย่างเพื่อหลีกเลี่ยง:

บางส่วนของโปรแกรม java
  • หลีกเลี่ยงการล็อกแบบซ้อนกัน - คุณต้องหลีกเลี่ยงการล็อกหลายเธรดซึ่งเป็นสาเหตุหลักที่ทำให้เกิดภาวะชะงักงัน โดยปกติจะเกิดขึ้นเมื่อคุณล็อกหลายเธรด

  • หลีกเลี่ยงการล็อคที่ไม่จำเป็น - ควรล็อคให้กับเธรดที่สำคัญ การล็อกเธรดที่ไม่จำเป็นซึ่งทำให้เกิดสภาวะชะงักงัน



  • ใช้การเข้าร่วมเธรด - การหยุดชะงักมักเกิดขึ้นเมื่อเธรดหนึ่งกำลังรอให้อีกเธรดเสร็จสิ้น ในกรณีนี้เราสามารถใช้ Thread.join กับเวลาสูงสุดที่เธรดจะใช้

สิ่งนี้ทำให้เรามาถึงตอนท้ายของบทความนี้ซึ่งเราได้เรียนรู้เกี่ยวกับการหยุดชะงักใน Java และวิธีหลีกเลี่ยง ฉันหวังว่าคุณจะเข้าใจทุกสิ่งที่แบ่งปันกับคุณในบทแนะนำนี้

หากคุณพบบทความเกี่ยวกับ“ Deadlock In Java” ที่เกี่ยวข้องโปรดดูที่ไฟล์ บริษัท การเรียนรู้ออนไลน์ที่เชื่อถือได้พร้อมเครือข่ายผู้เรียนที่พึงพอใจมากกว่า 250,000 คนกระจายอยู่ทั่วโลก

ข้อมูลที่เป็นนามธรรมใน c ++

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

หากคุณพบคำถามใด ๆ อย่าลังเลที่จะถามคำถามทั้งหมดของคุณในส่วนความคิดเห็นของ“ Deadlock In Java” และทีมงานของเรายินดีที่จะตอบ