您的位置:首页 > 其它

without synchronized keyword

2015-07-30 10:33 232 查看
package HeadFirstJava;

class BankAccount {
private int balance = 100;

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

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

public static void main(String[] args) {
BobAndMonica theJob = new BobAndMonica();
Thread one = new Thread(theJob);
Thread two = new Thread(theJob);
one.setName("Bob");
two.setName("Monica");
one.start();
two.start();
}
@Override
public void run() {
// TODO Auto-generated method stub
for (int x = 0; x < 10; x++) {
makeWithdrawl(10);
}
if (account.getBalance() < 0) {
System.out.println("Overdrawn");
}
}
private void makeWithdrawl(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 withdrawl");
} else {
System.out.println("Sorry, not enough for " + Thread.currentThread().getName());
}
}

}
Bob is about to withdraw

Bob is going to sleep

Monica is about to withdraw

Monica is going to sleep

Monica woke up.

Monica completes the withdrawl

Monica is about to withdraw

Monica is going to sleep

Bob woke up.

Bob completes the withdrawl

Bob is about to withdraw

Bob is going to sleep

Monica woke up.

Monica completes the withdrawl

Monica is about to withdraw

Monica is going to sleep

Bob woke up.

Bob completes the withdrawl

Bob is about to withdraw

Bob is going to sleep

Monica woke up.

Monica completes the withdrawl

Monica is about to withdraw

Monica is going to sleep

Bob woke up.

Bob completes the withdrawl

Bob is about to withdraw

Bob is going to sleep

Monica woke up.

Monica completes the withdrawl

Monica is about to withdraw

Monica is going to sleep

Bob woke up.

Bob completes the withdrawl

Bob is about to withdraw

Bob is going to sleep

Monica woke up.

Monica completes the withdrawl

Monica is about to withdraw

Monica is going to sleep

Bob woke up.

Bob completes the withdrawl

Sorry, not enough for Bob

Sorry, not enough for Bob

Sorry, not enough for Bob

Sorry, not enough for Bob

Sorry, not enough for Bob

Monica woke up.

Monica completes the withdrawl

Sorry, not enough for Monica

Sorry, not enough for Monica

Sorry, not enough for Monica

Sorry, not enough for Monica

OverdrawnBob is about to withdraw

Bob is going to sleep

Monica is about to withdraw

Monica is going to sleep

Monica woke up.

Monica completes the withdrawl

Monica is about to withdraw

Monica is going to sleep

Bob woke up.

Bob completes the withdrawl

Bob is about to withdraw

Bob is going to sleep

Monica woke up.

Monica completes the withdrawl

Monica is about to withdraw

Monica is going to sleep

Bob woke up.

Bob completes the withdrawl

Bob is about to withdraw

Bob is going to sleep

Monica woke up.

Monica completes the withdrawl

Monica is about to withdraw

Monica is going to sleep

Bob woke up.

Bob completes the withdrawl

Bob is about to withdraw

Bob is going to sleep

Monica woke up.

Monica completes the withdrawl

Monica is about to withdraw

Monica is going to sleep

Bob woke up.

Bob completes the withdrawl

Bob is about to withdraw

Bob is going to sleep

Monica woke up.

Monica completes the withdrawl

Monica is about to withdraw

Monica is going to sleep

Bob woke up.

Bob completes the withdrawl

Sorry, not enough for Bob

Sorry, not enough for Bob

Sorry, not enough for Bob

Sorry, not enough for Bob

Sorry, not enough for Bob

Monica woke up.

Monica completes the withdrawl

Sorry, not enough for Monica

Sorry, not enough for Monica

Sorry, not enough for Monica

Sorry, not enough for Monica

Overdrawn
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: