Advertisement
CSenshi

OOP - Salobie (Salobie)

Jul 2nd, 2019
389
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.32 KB | None | 0 0
  1. package f2015.ex4;
  2.  
  3. import java.util.Collections;
  4. import java.util.LinkedList;
  5. import java.util.List;
  6. import java.util.Random;
  7. import java.util.concurrent.locks.ReentrantLock;
  8.  
  9. public class Salobie {
  10.  
  11.     List in;
  12.     List out;
  13.     static ReentrantLock condLock;
  14.  
  15.     public static void main(String[] args) {
  16.         final Salobie r = new Salobie();
  17.         r.in = Collections.synchronizedList(new LinkedList()); // შემავალი სინი
  18.         r.out = Collections.synchronizedList(new LinkedList()); // გამომავალი სინი
  19.         condLock = new ReentrantLock();
  20.  
  21.         // მზარეულების დასტარტვა
  22.         Mzareuli c1 = new Mzareuli(10, r), c2 = new Mzareuli(15, r), c3 = new Mzareuli(7, r);
  23.         c1.start();
  24.         c2.start();
  25.         c3.start();
  26.  
  27.         // ეს ნაკადი იღებს შეკვეთებს და დებს შემავალ სინზე
  28.         (new Thread() {
  29.             public void run() {
  30.                 while (true) {
  31.                     Random rand = new Random();
  32.                     try {
  33.                         Thread.sleep(Math.abs(rand.nextInt()) % 1000);
  34.                     } catch (InterruptedException e) {
  35.                     }
  36.                     r.in.add(new Lobio(r));
  37.                     synchronized (r.in) {
  38.                         r.in.notifyAll();
  39.                     }
  40.                 } // end while
  41.             } // end run()
  42.         }).start();
  43.  
  44.         // ეს ნაკადი იღებს ლობიოს გამომავალი სინიდან
  45.         // და აძლევს კლიენტებს
  46.         (new Thread() {
  47.             public void run() {
  48.                 while (true) {
  49.                     while (r.out.size() == 0) {
  50.                         try {
  51.                             synchronized (r.out) {
  52.                                 r.out.wait();
  53.                             }
  54.                         } catch (InterruptedException e) {
  55.                         }
  56.                     }
  57.                     // ლობიოს აღება
  58.                     r.out.remove(0);
  59.                 } // end while
  60.             } // end run()
  61.         }).start();
  62.     } // end main()
  63. } //end Salobie
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement