java:thread_signalling

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:thread_signalling [2015/04/19 15:28]
gthanos [Ξαφνικά ξυπνήματα (Spurious wake-ups)]
java:thread_signalling [2016/02/26 11:15] (current)
Line 169: Line 169:
 </​WRAP>​ </​WRAP>​
  
-Παρατηρήστε ότι η κλάση MyWaitNotify2 υλοποιεί ένα ​+Παρατηρήστε ότι η κλάση ​**MyWaitNotify2** υλοποιεί ένα ​μία απλή κλειδαριά,​ όπου μόνο ένα νήμα μπορεί να πάρει την κλειδαριά,​ ενώ όλα τα υπόλοιπα νήματα περιμένουν. Μόλις ολοκληρώσει την επεξεργασία ελευθερώνει την κλειδαριά και ενημερώνει ένα από τα νήματα που περιμένουν να ξεκινήσει. Η παραπάνω κλάση θα μπορούσε να γραφεί και ως εξής:
  
 +<code java SimpleLock.java>​
 +public class SimpleLock {
  
 +  MonitorObject myMonitorObject = new MonitorObject();​
 +  boolean wasSignalled = false;
 +
 +  public void lock(){
 +    synchronized(myMonitorObject){
 +      while(!wasSignalled){
 +        try{
 +          myMonitorObject.wait();​
 +         } catch(InterruptedException e){...}
 +      }
 +      //clear signal and continue running.
 +      wasSignalled = false;
 +    }
 +  }
 +
 +  public void unlock(){
 +    synchronized(myMonitorObject){
 +      wasSignalled = true;
 +      myMonitorObject.notify();​
 +    }
 +  }
 +}
 +</​code>​
  
java/thread_signalling.txt · Last modified: 2016/02/26 11:15 (external edit)