Advertisement
Guest User

Untitled

a guest
Oct 10th, 2019
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.95 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement