java:synchronized_methods_blocks

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:synchronized_methods_blocks [2015/04/18 16:08]
gthanos [Συγχρονισμένα Βlocks]
java:synchronized_methods_blocks [2015/04/18 16:11]
gthanos [Συγχρονισμένα Βlocks]
Line 47: Line 47:
 Στο παρακάτω παράδειγμα έχουμε δύο συγχρονισμένα blocκ μέσα σε δύο μη συγχρονισμένες μεθόδους. Η διαφορά είναι ότι η κλάση ορίζει δύο επιπλέον αντικείμενα μόνο και μόνο για να χρησιμοποιήσει τα //monitor locks// των αντικειμένων αυτών Στο παρακάτω παράδειγμα έχουμε δύο συγχρονισμένα blocκ μέσα σε δύο μη συγχρονισμένες μεθόδους. Η διαφορά είναι ότι η κλάση ορίζει δύο επιπλέον αντικείμενα μόνο και μόνο για να χρησιμοποιήσει τα //monitor locks// των αντικειμένων αυτών
  
-<code java SycBlock.java>+<code java SyncBlock.java>
 public class SyncBlock { public class SyncBlock {
     private long c1 = 0;     private long c1 = 0;
Line 71: Line 71:
 Αν και ένα νήμα δεν μπορεί να λάβει το //monitor lock// ενός αντικειμένου,​ όταν αυτό έχει καταληφθεί από άλλο αντικείμενο,​ το ίδιο thread μπορεί να λάβει το //monitor lock// του ιδίου αντικειμένου όσες φορές χρειαστεί αν υπάρχουν εμφωλευμένες (nested) κλήσεις συγχρονισμένων μεθόδων ή συγχρονισμένων blocks. Σε αυτές τις περιπτώσεις το monitor lock απελευθερώνεται μόνο όταν το νήμα βγει και από την τελευταία μέθοδο ή block στην οποία μπήκε πριν από κάθε άλλη κλήση συγχρονισμένης μεθόδου ή μπλοκ. Αν και ένα νήμα δεν μπορεί να λάβει το //monitor lock// ενός αντικειμένου,​ όταν αυτό έχει καταληφθεί από άλλο αντικείμενο,​ το ίδιο thread μπορεί να λάβει το //monitor lock// του ιδίου αντικειμένου όσες φορές χρειαστεί αν υπάρχουν εμφωλευμένες (nested) κλήσεις συγχρονισμένων μεθόδων ή συγχρονισμένων blocks. Σε αυτές τις περιπτώσεις το monitor lock απελευθερώνεται μόνο όταν το νήμα βγει και από την τελευταία μέθοδο ή block στην οποία μπήκε πριν από κάθε άλλη κλήση συγχρονισμένης μεθόδου ή μπλοκ.
 </​WRAP>​ </​WRAP>​
 +
 +Δείτε το παραπάνω παράδειγμα εμφωλευμένων κλήσεων συγχρονισμένων μεθόδων ​
 +
 +<code java NestedSyncMethods.java {
 +public class NestedSyncMethods {
 +  void synchronized outer() {
 +    inner();
 +  }
 +  ​
 +  void synchronized inner() {
 +   ...
 +  }
 +}
 +</​code>​
  
  
java/synchronized_methods_blocks.txt · Last modified: 2016/02/26 11:15 (external edit)