Commit 41ec71a9 authored by Trisha Gee's avatar Trisha Gee
Browse files

[Ch15] 2nd Ed Ryan and Monica

parent b433836b
Loading
Loading
Loading
Loading
+53 −0
Changes for src/main/java/ch15/RyanAndMonicaJob.java: 53 added lines, 0 removed lines.
Original line number Diff line number Diff line
package ch15;

class BankAccount {
  private int balance = 100;

  public int getBalance() {
    return balance;
  }

  public void withdraw(int amount) {
    balance = balance - amount;
  }
}

public class RyanAndMonicaJob implements Runnable {
  private BankAccount account = new BankAccount();

  public static void main(String[] args) {
    RyanAndMonicaJob theJob = new RyanAndMonicaJob();
    Thread one = new Thread(theJob);
    Thread two = new Thread(theJob);
    one.setName("Ryan");
    two.setName("Monica");
    one.start();
    two.start();
  }

  public void run() {
    for (int x = 0; x < 10; x++) {
      makeWithdrawal(10);
      if (account.getBalance() < 0) {
        System.out.println("Overdrawn!");
      }
    }
  }

  private void makeWithdrawal(int amount) {
    if (account.getBalance() >= amount) {
      System.out.println(Thread.currentThread().getName() + " is about to withdraw");
      try {
        System.out.println(Thread.currentThread().getName() + " is going to sleep");
        Thread.sleep(500);
      } catch (InterruptedException ex) {
        ex.printStackTrace();
      }
      System.out.println(Thread.currentThread().getName() + " woke up.");
      account.withdraw(amount);
      System.out.println(Thread.currentThread().getName() + " completes the withdrawal");
    } else {
      System.out.println("Sorry, not enough for " + Thread.currentThread().getName());
    }
  }
}
 No newline at end of file