java:deadlock

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision Both sides next revision
java:deadlock [2015/03/30 05:27]
gthanos
java:deadlock [2015/03/30 05:28]
gthanos
Line 1: Line 1:
 ====== Αδιέξοδο στην χρήση των πόρων και πως να το αποφύγετε ====== ====== Αδιέξοδο στην χρήση των πόρων και πως να το αποφύγετε ======
  
-A deadlock is when two or more threads are blocked waiting to obtain locks that some of the other threads in the deadlock are holding. Deadlock can occur when multiple threads need the same locks, at the same time, but obtain them in different order. +Ένα αδιέξοδο στην χρήση των πόρων συμβαίνει όταν δύο νήματα A, B μπλοκάρονται επιχειρώντας τα κλειδώσουν ταυτόχρονα τα ίδια locks με αντίστροφη σειρά. Ας υποθέσουμε ότι το νήμα Α κλειδώνει το lockA και περιμένει να κλειδώσει και το lockB. Αντίστροφά το νήμα Β κλειδώνει το lockB και περιμένει να κλειδώσει και το lockA. Σε αυτή την περίπτωση,​ το νήμα Α περιμένει την ελευθέρωση του πόρου ​ από το νήμα Β και το νήμα Β περιμένει την ελευθέρωση του πόρου από το νήμα Α. Αν κανένας πόρος δεν ελεθερώνεται τότε τα νήματα παραμένουν μπλοκαρισμένα. Δείτε το παρακάτω παράδειγμα κώδικα που παρουσιάζει την κατάσταση που περιγράφεται παραπάνω.
- +
-For instance, if thread 1 locks A, and tries to lock B, and thread 2 has already locked B, and tries to lock A, a deadlock arises. Thread 1 can never get B, and thread 2 can never get A. In addition, neither of them will ever know. They will remain blocked on each their object, A and B, forever. This situation is a deadlock. +
- +
-The situation is illustrated below: +
- +
-Ένα αδιέξοδο στην χρήση των πόρων συμβαίνει όταν δύο νήματα A, B μπλοκάρονται επιχειρώντας τα κλειδώσουν ταυτόχρονα τα ίδια locks με αντίστροφη σειρά. Ας υποθέσουμε ότι το νήμα Α κλειδώνει το lockA και περιμένει να κλειδώσει και το lockB. Αντίστροφά το νήμα Β κλειδώνει το lockB και περιμένει να κλειδώσει και το lockA. Σε αυτή την περίπτωση,​ το νήμαΑ περιμένει την ελευθέρωση του πόρου ​ από το νήμα Β και το νήμα Β περιμένει την ελευθέρωση του πόρου από το νήμα Α. Αν κανένας πόρος δεν ελεθερώνεται τότε τα νήματα παραμένουν μπλοκαρισμένα. Δείτε το παρακάτω παράδειγμα κώδικα που παρουσιάζει την κατάσταση που περιγράφεται παραπάνω.+
  
 <code java TreeNode.java>​ <code java TreeNode.java>​
java/deadlock.txt · Last modified: 2016/02/26 11:15 (external edit)