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
Next revision Both sides next revision
java:synchronized_methods_blocks [2015/04/18 16:06]
gthanos [Συγχρονισμένες μέθοδοι και συγχρονισμένα blocks]
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 69: Line 69:
  
 <WRAP round center tip> <WRAP round center tip>
-Αν και ένα νήμα δεν μπορεί να λάβει το //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)