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
Previous revision
java:synchronized_methods_blocks [2015/04/18 16:08]
gthanos [Συγχρονισμένα Βlocks]
java:synchronized_methods_blocks [2015/04/18 16:12]
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)