SHARE
TWEET

Untitled

a guest Oct 10th, 2019 102 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. int skaiciai[] = {10, 20, 4, 12, 60, 51, 1, 14, 33, 25};
  2.             List<Integer> rezultatai = new ArrayList<Integer>();
  3.             Monitorius monitorius = new Monitorius();
  4.            
  5.             //monitoriaus uzpildymas
  6.             for (int i = 0; i < 10; i++) {
  7.                 monitorius.ideti(skaiciai[i]);
  8.             }
  9.             monitorius.spausdinti();
  10.             Thread pirma = new Gija(monitorius, rezultatai);
  11.             Thread antras = new Gija(monitorius, rezultatai);
  12.             Thread trecia = new Gija(monitorius, rezultatai);
  13.             Thread ketvirta = new Gija(monitorius, rezultatai);
  14.             pirma.start();
  15.             antras.start();
  16.             trecia.start();
  17.             ketvirta.start();
  18.             pirma.join();
  19.             antras.join();
  20.             trecia.join();
  21.             ketvirta.join();
  22.            
  23.             System.out.println("Baigta");
  24.  
  25. public class Gija extends Thread{
  26.     private Monitorius monitorius;
  27.     private List<Integer> rezSarasas;
  28.    
  29.     public Gija(Monitorius monitorius, List<Integer> rezSarasas){
  30.         this.monitorius = monitorius;
  31.         this.rezSarasas = rezSarasas;
  32.     }
  33.    
  34.     @Override
  35.     public void run(){
  36.         boolean pasibaige = false;
  37.         int paimtasSkaicius;
  38.         while(!pasibaige){
  39.             paimtasSkaicius = monitorius.paimti();
  40.             System.out.println(Thread.currentThread().getName() + " pasieme skaiciu " + paimtasSkaicius);
  41.             if (paimtasSkaicius != -1){
  42.                 if(paimtasSkaicius > 20){
  43.                     monitorius.idetiRezultata(paimtasSkaicius, rezSarasas);
  44.                     System.out.println(Thread.currentThread().getName() + " idejo " + paimtasSkaicius + " i sarasa");
  45.                 }
  46.             } else {
  47.                 pasibaige = true;
  48.             }
  49.         }
  50.     }
  51.    
  52. }
  53.  
  54. public class Monitorius {
  55.     private final int N = 10;
  56.     private int duomenys[];
  57.     private int kiekis;
  58.     private int pozicija;
  59.    
  60.     public Monitorius(){
  61.         this.duomenys = new int[N];
  62.         this.kiekis = 0;
  63.         this.pozicija = 0;
  64.        
  65.     }
  66.    
  67.     public synchronized void ideti(int skaicius) throws InterruptedException {
  68. //        arPerpildytas();
  69.         for (int i = 0; i < N; i++) {
  70.             if (duomenys[i] == 0){
  71.                 duomenys[i] = skaicius;
  72.                 kiekis++;
  73.                 break;
  74.             }
  75.         }
  76.     }
  77.    
  78.     public synchronized int paimti(){
  79.         if (pozicija != N){
  80.             return duomenys[pozicija++];
  81.         }
  82.         return -1;
  83.     }
  84.    
  85.     public synchronized void idetiRezultata(int skaicius, List<Integer> rezSarasas){
  86.         rezSarasas.add(skaicius);
  87.     }
  88.    
  89. //    private void arPerpildytas() throws InterruptedException {
  90. //        while (kiekis == 10) { wait(); }
  91. //    }
  92.    
  93.     public void spausdinti(){
  94.         for (int skaicius : duomenys) {
  95.             System.out.println(skaicius);
  96.         }
  97.     }
  98. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top