Advertisement
CSenshi

OOP - Final2019 (Buffer)

Jul 18th, 2019
346
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 0.64 KB | None | 0 0
  1. public class Buffer{
  2.  
  3.     private Mutex m1, m2;
  4.     private int n;
  5.     private in k;  
  6.  
  7.     private ReentrantLock lock;
  8.     object obj;
  9.    
  10.     public Buffer(int n, int k){
  11.         lock = new ReentrantLock();
  12.         m = new Mutex();
  13.         this.n = n;
  14.         this.k = k;
  15.         obj = new Object();
  16.     }
  17.  
  18.     public void await() {
  19.         lock.lock();
  20.         m2.lock(); 
  21.  
  22.         // atomic Substraction
  23.         m1.lock();
  24.         n--;
  25.         m1.unlock();
  26.        
  27.        
  28.         while(n > 0 && k > 0){
  29.             m2.unlock();           
  30.             lock.unlock();
  31.  
  32.             // atomic substraction
  33.             m2.lock();
  34.             k--;
  35.             m2.unlock();
  36.  
  37.             obj.wait();        
  38.  
  39.             lock.lock();
  40.             m2.lock(); 
  41.         }
  42.         obj.notify();
  43.         m2.unlock();   
  44.         lock.unlock();
  45.     }
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement