Πώς να χειριστείτε το αδιέξοδο στην Java;

Αυτό το άρθρο καλύπτει την έννοια του Deadlock In Java με ένα παράδειγμα που δείχνει πώς αποκλείεται το νήμα σε ένα πρόγραμμα πολλαπλών νημάτων.

Υποστηρίζει γλώσσα προγραμματισμού Java . Περιλαμβάνει πολλαπλά νήματα που εκτελούνται ταυτόχρονα για πολλαπλές εργασίες. Αλλά σε ορισμένες περιπτώσεις ή λόγω ορισμένων ελλείψεων, τα νήματα βρίσκονται στην κατάσταση αναμονής για πάντα. Σε αυτό το άρθρο, θα κατανοήσουμε την κατάσταση αδιεξόδου στο και διαφορετικούς τρόπους για να το αποφύγετε. Ακολουθούν τα θέματα που συζητούνται σε αυτό το ιστολόγιο:



Τι είναι το αδιέξοδο στην Java;

Το αδιέξοδο στην Java είναι μια κατάσταση όπου δύο ή περισσότερα νήματα αποκλείονται για πάντα, περιμένοντας το ένα στο άλλο.



Αυτό συμβαίνει συνήθως όταν πολλά νήματα χρειάζονται τις ίδιες κλειδαριές, αλλά τα λαμβάνουν με διαφορετικές παραγγελίες. στην Java πάσχει από την κατάσταση αδιεξόδου λόγω της συγχρονισμένης λέξης-κλειδιού.

Αναγκάζει το νήμα εκτέλεσης να μπλοκάρει ενώ περιμένει το κλείδωμα ή την οθόνη που σχετίζεται με το καθορισμένο αντικείμενο .



Αδιέξοδο στην 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 ('Thread 1: Locked r1') δοκιμάστε το {Thread.sleep (100)} catch (εξαίρεση e) {} συγχρονισμένο (r2) {System.out.println ('Thread 1: Locked r2')}}} } Thread t2 = new Thread () {public void run () {synchronized (r1) {System.out.println ('Thread 2: Locked r1') Δοκιμάστε το {Thread.sleep (100)} catch (εξαίρεση e) {} συγχρονισμένο (r2) {System.out.println ('Thread 2: Locked r2')}}}} t1.start () t2.start ()}}
 Παραγωγή: Νήμα 1: Κλειδωμένο r1 Νήμα 2: Κλειδωμένο r2

Πώς να αποφύγετε το αδιέξοδο στην Java;

Αν και δεν είναι απολύτως δυνατό να αποφευχθεί η κατάσταση αδιεξόδου, αλλά μπορούμε να ακολουθήσουμε ορισμένα μέτρα ή δείκτες για να τα αποφύγουμε:

  • Αποφύγετε τις ένθετες κλειδαριές - Πρέπει να αποφύγετε να δίνετε κλειδαριές σε πολλά νήματα, αυτός είναι ο κύριος λόγος για μια κατάσταση αδιεξόδου. Συνήθως συμβαίνει όταν δίνετε κλειδαριές σε πολλά νήματα.

  • Αποφύγετε τις περιττές κλειδαριές - Οι κλειδαριές πρέπει να δοθούν στα σημαντικά νήματα. Δίνοντας κλειδαριές στα περιττά νήματα που προκαλούν το αδιέξοδο.



  • Χρησιμοποιώντας το νήμα Join - Ένα αδιέξοδο συμβαίνει συνήθως όταν το ένα νήμα περιμένει το άλλο να τελειώσει. Σε αυτήν την περίπτωση, μπορούμε να χρησιμοποιήσουμε το Thread.join με το μέγιστο χρόνο που θα χρειαστεί ένα νήμα.

Αυτό μας φέρνει στο τέλος αυτού του άρθρου όπου μάθαμε για το αδιέξοδο στην Java και πώς να το αποφύγουμε. Ελπίζω να είστε ξεκάθαροι με όλα όσα έχουν μοιραστεί μαζί σας σε αυτό το σεμινάριο.

Εάν βρήκατε αυτό το άρθρο σχετικά με το 'Deadlock In Java' σχετικό, ρίξτε μια ματιά στο μια αξιόπιστη διαδικτυακή εταιρεία εκμάθησης με ένα δίκτυο περισσότερων από 250.000 ικανοποιημένων μαθητών σε όλο τον κόσμο.

ταξινόμηση συνάρτησης c ++ array

Είμαστε εδώ για να σας βοηθήσουμε σε κάθε βήμα στο ταξίδι σας και να βρείτε ένα πρόγραμμα σπουδών που έχει σχεδιαστεί για μαθητές και επαγγελματίες που θέλουν να γίνουν προγραμματιστές Java. Το μάθημα έχει σχεδιαστεί για να σας δώσει μια πρώτη αρχή στον προγραμματισμό Java και να σας εκπαιδεύσει τόσο για τις βασικές όσο και για τις προηγμένες ιδέες Java μαζί με διάφορες σαν Παραχειμάζω & .

Εάν συναντήσετε οποιεσδήποτε ερωτήσεις, μη διστάσετε να κάνετε όλες τις ερωτήσεις σας στην ενότητα σχολίων του 'Deadlock In Java' και η ομάδα μας θα χαρεί να απαντήσει.