User Tools

Site Tools


java:synchronization

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:synchronization [2017/03/19 17:31]
gthanos [Αντιμετωπίζοντας την ασάφεια στις τιμές των μεταβλητών]
java:synchronization [2017/03/19 18:27]
gthanos
Line 3: Line 3:
 Τα νήματα κατά κανόνα επικοινωνούν μέσω μεταβλητών στις οποίες μοιράζονται την πρόσβαση. Το πρόβλημα με αυτού του είδους την επικοινωνία είναι ότι είναι πιθανό να παρουσιαστεί ασάφεια ως προς τις τιμές των μεταβλητών που γράφονται οι διαβάζονται από τα παράλληλα νήματα. Το πρόβλημα της ασάφειας εξηγείται παρακάτω μέσα από ένα παράδειγμα. Τα νήματα κατά κανόνα επικοινωνούν μέσω μεταβλητών στις οποίες μοιράζονται την πρόσβαση. Το πρόβλημα με αυτού του είδους την επικοινωνία είναι ότι είναι πιθανό να παρουσιαστεί ασάφεια ως προς τις τιμές των μεταβλητών που γράφονται οι διαβάζονται από τα παράλληλα νήματα. Το πρόβλημα της ασάφειας εξηγείται παρακάτω μέσα από ένα παράδειγμα.
  
-===== Παράδειγμα ασάφειας στις τιμές μεταβλητών παράλληλα εκτελούμενων νημάτων =====+===== Παράδειγμα ασάφειας στις τιμές διαμοιραζόμενων μεταβλητών παράλληλα εκτελούμενων νημάτων =====
  
-Στο παρακάτω παράδειγμα κώδικα ας υποθέσουμε ότι ένα αντικείμενο της κλάσης Counter διαμοιράζεται μεταξύ δύο νημάτων. Η ασάφεια ως προς τις τιμές μίας μεταβλητής παρουσιάζεται όταν δύο νήματα προσπαθούν ταυτόχρονα να μεταβάλλουν την τιμή μίας μεταβλητής.+Στο παρακάτω παράδειγμα κώδικα ας υποθέσουμε ότι ένα αντικείμενο της κλάσης Counter διαμοιράζεται μεταξύ δύο νημάτων. Η ασάφεια ως προς τις τιμές μίας μεταβλητής παρουσιάζεται όταν δύο νήματα προσπαθούν ταυτόχρονα να μεταβάλλουν την τιμή της μεταβλητής.
  
 <code java Counter.java> <code java Counter.java>
Line 23: Line 23:
     }     }
  
 +}
 +
 +class Counter {
 +  private int c = 0;
 +  public void increment() { c++; }
 +  public void decrement() {  c--; }
 +  public int value() {
 +    return c;
 +  }
 } }
 </code> </code>
java/synchronization.txt · Last modified: 2018/03/08 09:26 by gthanos