This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
java:starvation_fairness [2015/04/19 16:33] gthanos [Χρησιμοποιώντας Locks αντί για συγχρονισμένα blocks/μεθόδους] |
java:starvation_fairness [2016/02/26 11:15] (current) |
||
---|---|---|---|
Line 74: | Line 74: | ||
<WRAP important 80% round center> | <WRAP important 80% round center> | ||
Όταν περιφρουρούμε ένα κρίσιμο τμήμα κώδικα με μία κλειδαριά (όπως η παραπάνω) το οποίο μπορεί να δώσει ένα ή περισσότερα Exceptions είναι σημαντικό να τοποθετούμε τη μέθοδο unlock() μέσα σε ένα finally block. Με αυτό τον τρόπο είμαστε βέβαιοι ότι ακόμη και εάν συμβεί κάποιο Exception, η κλειδαριά θα ξεκλειδώσει, ώστε να μπορέσουν άλλα νήματα να κλειδώσουν και να εκτελέσουν το κρίσιμο τμήμα του κώδικα. | Όταν περιφρουρούμε ένα κρίσιμο τμήμα κώδικα με μία κλειδαριά (όπως η παραπάνω) το οποίο μπορεί να δώσει ένα ή περισσότερα Exceptions είναι σημαντικό να τοποθετούμε τη μέθοδο unlock() μέσα σε ένα finally block. Με αυτό τον τρόπο είμαστε βέβαιοι ότι ακόμη και εάν συμβεί κάποιο Exception, η κλειδαριά θα ξεκλειδώσει, ώστε να μπορέσουν άλλα νήματα να κλειδώσουν και να εκτελέσουν το κρίσιμο τμήμα του κώδικα. | ||
+ | <code java> | ||
+ | lock.lock(); | ||
+ | try{ | ||
+ | //do critical section code, which may throw exception | ||
+ | } finally { | ||
+ | lock.unlock(); | ||
+ | } | ||
+ | </code> | ||
</WRAP> | </WRAP> | ||