Advertisement
KRESH-

multithread

May 22nd, 2021
38
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.62 KB | None | 0 0
  1. package com.company;
  2. import java.util.List;
  3. import java.util.ArrayList;
  4.  
  5. public class CarRacing {
  6. private int numberOfLaps;
  7. private List<CarRacer> racers;
  8. private List<CarRacer> rankingList;
  9. private double fuelQuantity;
  10.  
  11. public CarRacing(int numberOfLaps) {
  12. this.numberOfLaps = numberOfLaps;
  13. racers = new ArrayList();
  14. rankingList = new ArrayList();
  15. }
  16.  
  17. public CarRacing(int numberOfLaps, double fuelQuantity) {
  18. this.numberOfLaps = numberOfLaps;
  19. this.fuelQuantity = fuelQuantity;
  20. rankingList = new ArrayList();
  21. racers = new ArrayList();
  22. }
  23.  
  24. public void addRacer(CarRacer carRacer) {
  25. racers.add(carRacer);
  26. }
  27.  
  28. public void addRacerToRankingList(CarRacer carRacer) {
  29. rankingList.add(carRacer);
  30. }
  31.  
  32. public void displayRankList() {
  33. System.out.println("Rank Linst: ");
  34. for (CarRacer racer : this.rankingList ) {
  35. System.out.println(racer);
  36. }
  37. }
  38.  
  39. public double getFuelQuantity() {
  40. return this.fuelQuantity;
  41. }
  42.  
  43. public int getNumberOfLaps() {
  44. return this.numberOfLaps;
  45. }
  46.  
  47. public void race() {
  48. for (CarRacer racer : this.racers) {
  49. Thread thread = new Thread(new RaceThread(this, racer));
  50. thread.start();
  51. }
  52. }
  53.  
  54. public boolean fueling(double quantityNeeded) {
  55. System.out.println(Thread.currentThread().getName() + " " + quantityNeeded +
  56. this.getFuelQuantity());
  57. if(this.getFuelQuantity() >= quantityNeeded)
  58. {
  59. this.fuelQuantity -= quantityNeeded;
  60. return true;
  61. }
  62. return false;
  63. }
  64.  
  65. public void startFueling(CarRacer carRacer, final double fuelNeeded) {
  66. Runnable runnable = new Runnable() {
  67. @Override
  68. public void run() {
  69. boolean isFueled = fueling(fuelNeeded);
  70.  
  71. if(isFueled)
  72. {
  73. System.out.println("True");
  74. }
  75. else {
  76. System.out.println("False");
  77. }
  78. }
  79. };
  80. new Thread(runnable, carRacer.getName()).start();
  81. }
  82. }
  83.  
  84. package com.company;
  85.  
  86. public class CarRacer {
  87. private String name;
  88.  
  89. public CarRacer(String name) {
  90. this.name = name;
  91. }
  92.  
  93. public String getName() {
  94. return this.name;
  95. }
  96.  
  97. @Override
  98. public String toString() {
  99. return "CarRacer{ name = " + this.name+ "}";
  100. }
  101. }
  102.  
  103. package com.company;
  104.  
  105. public class RaceThread implements Runnable {
  106. private CarRacer carRacer;
  107. private CarRacing carRacing;
  108.  
  109. public RaceThread(CarRacing carRacing, CarRacer carRacer) {
  110. this.carRacer = carRacer;
  111. this.carRacing = carRacing;
  112. }
  113.  
  114. @Override
  115. public void run() {
  116. for(int i = 1; i < carRacing.getNumberOfLaps(); i++ )
  117. {
  118. System.out.println(this.carRacer.getName() + " tour: " + i);
  119. if(i == carRacing.getNumberOfLaps()) {
  120. System.out.println(this.carRacer.getName() + " finished the racing!");
  121. this.carRacing.addRacerToRankingList(carRacer);
  122. }
  123. }
  124. }
  125. }
  126.  
  127. package com.company;
  128.  
  129. public class Refueling implements Runnable {
  130.  
  131. private CarRacing racing;
  132. private double fuelNeeded;
  133.  
  134. public Refueling(CarRacing racing, double fuelNeeded)
  135. {
  136. this.racing = racing;
  137. this.fuelNeeded = fuelNeeded;
  138. }
  139.  
  140. public double getFuelNeeded() {
  141. return this.fuelNeeded;
  142. }
  143.  
  144. @Override
  145. public void run() {
  146. boolean isFueled = racing.fueling(fuelNeeded);
  147.  
  148. if(isFueled)
  149. {
  150. System.out.println("True");
  151. }
  152. else {
  153. System.out.println("False");
  154. }
  155. }
  156. }
  157.  
  158. package com.company;
  159.  
  160. import java.util.logging.Level;
  161. import java.util.logging.Logger;
  162.  
  163. public class Main {
  164.  
  165. public static void main(String[] args) {
  166. CarRacer ivan = new CarRacer("Ivan");
  167. CarRacer angel = new CarRacer("Angel");
  168.  
  169. CarRacing carRacing = new CarRacing(20, 100);
  170. carRacing.addRacer(angel);
  171. carRacing.addRacer(ivan);
  172. /*
  173. carRacing.race();
  174.  
  175. try
  176. {
  177. Thread.sleep(5000);
  178.  
  179. } catch ( InterruptedException ex)
  180. {
  181. Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
  182. }
  183.  
  184. carRacing.displayRankList();*/
  185.  
  186. carRacing.startFueling(ivan, 80);
  187. carRacing.startFueling(angel, 40);
  188. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement