Advertisement
Pihtija

Vezbe 4 OBP2

Nov 13th, 2018
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.66 KB | None | 0 0
  1. Kupac
  2. ----------------
  3. public class Kupac extends Thread{
  4. private String ime;
  5. private Magacin m;
  6. private int vreme;
  7. private boolean radi;
  8.  
  9. public Kupac(String ime, Magacin m, int vreme){
  10. this.ime=ime;
  11. this.m=m;
  12. this.vreme=vreme;
  13. this.radi=true;
  14.  
  15. }
  16.  
  17. public void run(){
  18. while (radi){
  19. System.out.println(ime + " inicira kupovinu...");
  20. if(m.kupi(6))
  21. System.out.println(ime + " uspesno pazario");
  22. else
  23. System.out.println(ime + " nije nista pazario");
  24.  
  25. try {
  26. Thread.sleep(vreme*1000);
  27. } catch (InterruptedException e) {
  28. e.printStackTrace();
  29. }
  30. }
  31. }
  32.  
  33. public void ugasiNit(){
  34. this.radi=false;
  35. }
  36. }
  37.  
  38. ---------------------------------
  39. Magacin
  40. ---------------------------------
  41. public Magacin(String nazivArtikla, int kolicina) {
  42. this.nazivArtikla = nazivArtikla;
  43. this.kolicina = kolicina; //u magacinu
  44. }
  45.  
  46. public synchronized boolean kupi(int kol){
  47. while (kolicina<kol){
  48. System.out.println("Trenutno nema na stanju, sacekajte...");
  49. try {
  50. wait();
  51. } catch (InterruptedException e) {
  52. e.printStackTrace();
  53. }
  54. }
  55. kolicina-=kol;
  56. System.out.println("Trenutna kolicina: "+ kolicina);
  57. return true;
  58. }
  59.  
  60. public synchronized void updareKolicina(){
  61. System.out.println("Azuriramo stanje...");
  62. kolicina+=5;
  63. notifyAll();
  64. }
  65.  
  66. public void run(){
  67. for (int i=0;i<5;i++){
  68. updareKolicina();
  69. try {
  70. Thread.sleep(4000);
  71. } catch (InterruptedException e) {
  72. e.printStackTrace();
  73. }
  74. }
  75. }
  76. }
  77. -----------------------------------------------
  78. Program
  79. -----------------------------------------------
  80. package glavni;
  81.  
  82. import paket1.Kupac;
  83. import paket1.Magacin;
  84.  
  85. /**
  86. * Created by urosrt4515 on 11/13/2018.
  87. */
  88. public class Program {
  89. public static void main(String[] args) {
  90. Magacin m=new Magacin("Jabuka", 10);
  91. Kupac k1=new Kupac("Pera", m, 3);
  92. Kupac k2=new Kupac("Mile", m, 5);
  93.  
  94. m.start();
  95. k1.start();
  96. k2.start();
  97.  
  98. try {
  99. Thread.sleep(25000);
  100. } catch (InterruptedException e) {
  101. e.printStackTrace();
  102. }
  103.  
  104. k1.ugasiNit();
  105. k2.ugasiNit();
  106. }
  107. }
  108.  
  109. ------------------------------
  110. samostalni
  111. ------------------------------
  112. package samostalni_klase;
  113.  
  114. /**
  115. * Created by urosrt4515 on 11/13/2018.
  116. */
  117. public class Hotel extends Thread {
  118. private Musterija[] niz= new Musterija[5];
  119. private boolean radi;
  120.  
  121. public synchronized void smestanjeMusterija(Musterija m) {
  122. for (int i = 0; i < niz.length; i++) {
  123. if (niz[i] == null) {
  124. niz[i] = m;
  125. System.out.println(m.toString() + "smesten je u niz na indeksu " + i + "." +
  126. " Kapacitet: " + i + "/" + niz.length );
  127. }
  128. else System.out.println("Kapacite hotela je pun");
  129. }
  130. }
  131.  
  132. public synchronized void odjavljivanjeMusterija(Musterija m) {
  133. while (radi) {
  134. for (int i = 0; i < niz.length; i++) {
  135. if (niz[i] == m && m.getVremeBoravka() == 0){
  136. niz[i] = null;
  137. System.out.println(m.toString() + " je napustio hotel. Stanje je: " +
  138. i + "/" + niz.length);
  139. }
  140. else {
  141. m.smanjiVremeBoravka();
  142. System.out.println("Prosao je dan za musteriju - " + m.toString());
  143. }
  144. }
  145. try {
  146. Thread.sleep(1000);
  147. } catch (InterruptedException e) {
  148. e.printStackTrace();
  149. }
  150. }
  151. }
  152.  
  153.  
  154.  
  155. public void ugasiNit(){
  156. this.radi=false;
  157. }
  158. }
  159.  
  160. package samostalni_klase;
  161.  
  162. /**
  163. * Created by urosrt4515 on 11/13/2018.
  164. */
  165. public class Musterija {
  166. private int vremeBoravka;
  167. private static int jedisntveniID=0;
  168.  
  169. public Musterija(int vremeBoravka) {
  170. this.vremeBoravka = vremeBoravka;
  171. jedisntveniID++;
  172.  
  173. }
  174.  
  175. public int getVremeBoravka() {
  176. return vremeBoravka;
  177. }
  178.  
  179. public void smanjiVremeBoravka(){
  180. this.vremeBoravka-=1;
  181. }
  182.  
  183. @Override
  184. public String toString() {
  185. return "[Musterija " + jedisntveniID +"b: "+vremeBoravka+"]";
  186. }
  187. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement