Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.company;
- import java.util.List;
- import java.util.ArrayList;
- public class CarRacing {
- private int numberOfLaps;
- private List<CarRacer> racers;
- private List<CarRacer> rankingList;
- private double fuelQuantity;
- public CarRacing(int numberOfLaps) {
- this.numberOfLaps = numberOfLaps;
- racers = new ArrayList();
- rankingList = new ArrayList();
- }
- public CarRacing(int numberOfLaps, double fuelQuantity) {
- this.numberOfLaps = numberOfLaps;
- this.fuelQuantity = fuelQuantity;
- rankingList = new ArrayList();
- racers = new ArrayList();
- }
- public void addRacer(CarRacer carRacer) {
- racers.add(carRacer);
- }
- public void addRacerToRankingList(CarRacer carRacer) {
- rankingList.add(carRacer);
- }
- public void displayRankList() {
- System.out.println("Rank Linst: ");
- for (CarRacer racer : this.rankingList ) {
- System.out.println(racer);
- }
- }
- public double getFuelQuantity() {
- return this.fuelQuantity;
- }
- public int getNumberOfLaps() {
- return this.numberOfLaps;
- }
- public void race() {
- for (CarRacer racer : this.racers) {
- Thread thread = new Thread(new RaceThread(this, racer));
- thread.start();
- }
- }
- public boolean fueling(double quantityNeeded) {
- System.out.println(Thread.currentThread().getName() + " " + quantityNeeded +
- this.getFuelQuantity());
- if(this.getFuelQuantity() >= quantityNeeded)
- {
- this.fuelQuantity -= quantityNeeded;
- return true;
- }
- return false;
- }
- public void startFueling(CarRacer carRacer, final double fuelNeeded) {
- Runnable runnable = new Runnable() {
- @Override
- public void run() {
- boolean isFueled = fueling(fuelNeeded);
- if(isFueled)
- {
- System.out.println("True");
- }
- else {
- System.out.println("False");
- }
- }
- };
- new Thread(runnable, carRacer.getName()).start();
- }
- }
- package com.company;
- public class CarRacer {
- private String name;
- public CarRacer(String name) {
- this.name = name;
- }
- public String getName() {
- return this.name;
- }
- @Override
- public String toString() {
- return "CarRacer{ name = " + this.name+ "}";
- }
- }
- package com.company;
- public class RaceThread implements Runnable {
- private CarRacer carRacer;
- private CarRacing carRacing;
- public RaceThread(CarRacing carRacing, CarRacer carRacer) {
- this.carRacer = carRacer;
- this.carRacing = carRacing;
- }
- @Override
- public void run() {
- for(int i = 1; i < carRacing.getNumberOfLaps(); i++ )
- {
- System.out.println(this.carRacer.getName() + " tour: " + i);
- if(i == carRacing.getNumberOfLaps()) {
- System.out.println(this.carRacer.getName() + " finished the racing!");
- this.carRacing.addRacerToRankingList(carRacer);
- }
- }
- }
- }
- package com.company;
- public class Refueling implements Runnable {
- private CarRacing racing;
- private double fuelNeeded;
- public Refueling(CarRacing racing, double fuelNeeded)
- {
- this.racing = racing;
- this.fuelNeeded = fuelNeeded;
- }
- public double getFuelNeeded() {
- return this.fuelNeeded;
- }
- @Override
- public void run() {
- boolean isFueled = racing.fueling(fuelNeeded);
- if(isFueled)
- {
- System.out.println("True");
- }
- else {
- System.out.println("False");
- }
- }
- }
- package com.company;
- import java.util.logging.Level;
- import java.util.logging.Logger;
- public class Main {
- public static void main(String[] args) {
- CarRacer ivan = new CarRacer("Ivan");
- CarRacer angel = new CarRacer("Angel");
- CarRacing carRacing = new CarRacing(20, 100);
- carRacing.addRacer(angel);
- carRacing.addRacer(ivan);
- /*
- carRacing.race();
- try
- {
- Thread.sleep(5000);
- } catch ( InterruptedException ex)
- {
- Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
- }
- carRacing.displayRankList();*/
- carRacing.startFueling(ivan, 80);
- carRacing.startFueling(angel, 40);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement