Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int skaiciai[] = {10, 20, 4, 12, 60, 51, 1, 14, 33, 25};
- List<Integer> rezultatai = new ArrayList<Integer>();
- Monitorius monitorius = new Monitorius();
- //monitoriaus uzpildymas
- for (int i = 0; i < 10; i++) {
- monitorius.ideti(skaiciai[i]);
- }
- monitorius.spausdinti();
- Thread pirma = new Gija(monitorius, rezultatai);
- Thread antras = new Gija(monitorius, rezultatai);
- Thread trecia = new Gija(monitorius, rezultatai);
- Thread ketvirta = new Gija(monitorius, rezultatai);
- pirma.start();
- antras.start();
- trecia.start();
- ketvirta.start();
- pirma.join();
- antras.join();
- trecia.join();
- ketvirta.join();
- System.out.println("Baigta");
- public class Gija extends Thread{
- private Monitorius monitorius;
- private List<Integer> rezSarasas;
- public Gija(Monitorius monitorius, List<Integer> rezSarasas){
- this.monitorius = monitorius;
- this.rezSarasas = rezSarasas;
- }
- @Override
- public void run(){
- boolean pasibaige = false;
- int paimtasSkaicius;
- while(!pasibaige){
- paimtasSkaicius = monitorius.paimti();
- System.out.println(Thread.currentThread().getName() + " pasieme skaiciu " + paimtasSkaicius);
- if (paimtasSkaicius != -1){
- if(paimtasSkaicius > 20){
- monitorius.idetiRezultata(paimtasSkaicius, rezSarasas);
- System.out.println(Thread.currentThread().getName() + " idejo " + paimtasSkaicius + " i sarasa");
- }
- } else {
- pasibaige = true;
- }
- }
- }
- }
- public class Monitorius {
- private final int N = 10;
- private int duomenys[];
- private int kiekis;
- private int pozicija;
- public Monitorius(){
- this.duomenys = new int[N];
- this.kiekis = 0;
- this.pozicija = 0;
- }
- public synchronized void ideti(int skaicius) throws InterruptedException {
- // arPerpildytas();
- for (int i = 0; i < N; i++) {
- if (duomenys[i] == 0){
- duomenys[i] = skaicius;
- kiekis++;
- break;
- }
- }
- }
- public synchronized int paimti(){
- if (pozicija != N){
- return duomenys[pozicija++];
- }
- return -1;
- }
- public synchronized void idetiRezultata(int skaicius, List<Integer> rezSarasas){
- rezSarasas.add(skaicius);
- }
- // private void arPerpildytas() throws InterruptedException {
- // while (kiekis == 10) { wait(); }
- // }
- public void spausdinti(){
- for (int skaicius : duomenys) {
- System.out.println(skaicius);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement