Làm thế nào để xử lý bế tắc trong Java?



Bài viết này đề cập đến khái niệm Deadlock Trong Java với một ví dụ cho thấy cách các luồng trong một chương trình đa luồng bị chặn.

Hỗ trợ ngôn ngữ lập trình Java . Nó liên quan đến nhiều luồng chạy đồng thời để đa nhiệm. Nhưng trong một số trường hợp hoặc do thiếu sót nào đó, các chủ đề tự thấy mình trong trạng thái chờ đợi mãi mãi. Trong bài viết này, chúng ta sẽ hiểu điều kiện deadlock trong và các cách khác nhau để tránh nó. Sau đây là các chủ đề được thảo luận trong blog này:

Deadlock trong Java là gì?

Deadlock trong Java là tình trạng hai hoặc nhiều luồng bị chặn mãi mãi, chờ nhau.





Điều này thường xảy ra khi nhiều luồng cần các khóa giống nhau nhưng lấy chúng theo các thứ tự khác nhau. trong Java gặp phải tình trạng bế tắc vì từ khóa được đồng bộ hóa.

Nó khiến luồng thực thi bị chặn trong khi chờ khóa hoặc giám sát, được liên kết với vật .



sự khác biệt chính giữa một hacker và một hacker có đạo đức là:

Bế tắc trong Java - Edureka

Ví dụ về bế tắc

public class Ví dụ {public static void main (String [] args) {final String r1 = 'edureka' final String r2 = 'java' Thread t1 = new Thread () {public void run () {sync (r1) {Hệ thống. out.println ('Luồng 1: Đã khóa r1') hãy thử {Thread.sleep (100)} bắt (ngoại lệ e) {} sync (r2) {System.out.println ('Luồng 1: Đã khóa r2')}}} } Thread t2 = new Thread () {public void run () {sync (r1) {System.out.println ('Thread 2: Locked r1') try {Thread.sleep (100)} bắt (ngoại lệ e) {} sync (r2) {System.out.println ('Luồng 2: Đã khóa r2')}}}} t1.start () t2.start ()}}
 Đầu ra: Chủ đề 1: Đã khóa r1 Chủ đề 2: Đã khóa r2

Làm thế nào để tránh bế tắc trong Java?

Mặc dù không hoàn toàn có thể tránh được tình trạng deadlock, nhưng chúng ta có thể làm theo các biện pháp hoặc lưu ý nhất định để tránh chúng:

cách chạy nhật thực trên windows
  • Tránh các ổ khóa lồng nhau - Bạn phải tránh đưa ổ khóa vào nhiều luồng, đây là nguyên nhân chính dẫn đến tình trạng khóa máy. Nó thường xảy ra khi bạn cung cấp khóa cho nhiều luồng.

  • Tránh các ổ khóa không cần thiết - Các ổ khóa nên được trao cho các đề quan trọng. Đưa ổ khóa vào các luồng không cần thiết gây ra tình trạng khóa máy.



  • Sử dụng tham gia chuỗi - Bế tắc thường xảy ra khi một luồng đang đợi luồng kia kết thúc. Trong trường hợp này, chúng ta có thể sử dụng Thread.join với thời gian tối đa mà một chủ đề sẽ mất.

Đến phần cuối của bài viết này, chúng ta đã tìm hiểu về deadlock trong Java và cách tránh nó. Tôi hy vọng bạn rõ ràng với tất cả những gì đã được chia sẻ với bạn trong hướng dẫn này.

Nếu bạn thấy bài viết này về “Deadlock In Java” có liên quan, hãy xem một công ty học trực tuyến đáng tin cậy với mạng lưới hơn 250.000 người học hài lòng trải dài trên toàn cầu.

có cái gì bên trong__

Chúng tôi ở đây để giúp bạn từng bước trong hành trình của mình và đưa ra chương trình giảng dạy được thiết kế cho sinh viên và các chuyên gia muốn trở thành Nhà phát triển Java. Khóa học được thiết kế để cung cấp cho bạn khởi đầu về lập trình Java và đào tạo bạn về cả khái niệm Java cốt lõi và nâng cao cùng với nhiều giống Ngủ đông & .

Nếu bạn gặp bất kỳ câu hỏi nào, vui lòng đặt tất cả câu hỏi của bạn trong phần nhận xét của “Deadlock In Java” và nhóm của chúng tôi sẽ sẵn lòng trả lời.