Advertisement
Guest User

Java - Golibroda

a guest
Dec 12th, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.63 KB | None | 0 0
  1. package golibroda;
  2.  
  3. public class SprawdzeniePoczekalni {
  4. private boolean dostepne = false;
  5.  
  6. public SprawdzeniePoczekalni(boolean dos)
  7. {
  8. this.dostepne = dos;
  9. }
  10.  
  11. public synchronized void zajmij(String nazwa)
  12. {
  13. while (dostepne == false)
  14. {
  15. try {
  16. System.out.println(nazwa + " czeka na sprawdzenie");
  17. wait();
  18. } catch (InterruptedException e) { }
  19. }
  20. if(nazwa.equals("Golibroda"))
  21. System.out.println(nazwa + " sprawdza poczekalnie");
  22. else
  23. System.out.println(nazwa + " sprawdza czy Golibroda jest zajety");
  24. dostepne = false;
  25. }
  26.  
  27. public synchronized void zwolnij(String nazwa)
  28. {
  29. System.out.println(nazwa + " skonczyl sprawdzac");
  30. dostepne = true;
  31. notifyAll();
  32. }
  33.  
  34. public static void main(String[] args)
  35. {
  36. SprawdzeniePoczekalni g = new SprawdzeniePoczekalni(true);
  37.  
  38. Golibroda golibroda = new Golibroda(g);
  39. Klient klient1 = new Klient(g);
  40. //Klient klient2 = new Klient(g);
  41. //Klient klient3 = new Klient(g);
  42. golibroda.start();
  43. klient1.start();
  44. //klient2.start();
  45. //klient3.start();
  46.  
  47. }
  48. }
  49.  
  50. package golibroda;
  51.  
  52. public class Golibroda extends Thread{
  53. private SprawdzeniePoczekalni spr;
  54. private String nazwa = "Golibroda";
  55. public boolean zajety = false;
  56. public Golibroda(SprawdzeniePoczekalni b)
  57. {
  58. this.spr = b;
  59. }
  60. public void run()
  61. {
  62. if(!zajety)
  63. {
  64. for (int i = 0; i < 1; i++)
  65. {
  66. spr.zajmij(nazwa);
  67. try {
  68. Thread.sleep((int)(Math.random() * 100));
  69. } catch (InterruptedException e) {
  70. e.printStackTrace();
  71. }
  72. spr.zwolnij(nazwa);
  73. }
  74. }
  75. else
  76. {
  77. try {
  78. Thread.sleep((int)(Math.random() * 100));
  79. } catch (InterruptedException e) {
  80. e.printStackTrace();
  81. }
  82. }
  83. }
  84. }
  85.  
  86. package golibroda;
  87.  
  88. public class Klient extends Thread{
  89. private SprawdzeniePoczekalni bilet;
  90. private String nazwa = "Klient";
  91. public Klient(SprawdzeniePoczekalni b)
  92. {
  93. this.bilet = b;
  94. }
  95. public void run()
  96. {
  97. for (int i = 0; i < 1; i++)
  98. {
  99. bilet.zajmij(nazwa);
  100. try {
  101. Thread.sleep((int)(Math.random() * 100));
  102. } catch (InterruptedException e) {
  103. e.printStackTrace();
  104. }
  105. bilet.zwolnij(nazwa);
  106. }
  107. }
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement