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
相关文章推荐
- 手动编译安装LAMP架构,并且实现nagios图形化监控(四)
- C 编译
- HDU 2829 Lawrence (斜率优化DP)
- u3d c# 写一个通用倒计时器
- 面试
- mysql 学习
- php-fpm的配置和优化
- Node.js学习系列总索引
- Mac OS X 下 LNMP 环境配置
- synchronized keyword DEMO
- POJ 3784 Running Median
- 管理目录
- Ios开发之 -- js和ios的交互
- mongo 学习笔记
- Xcode 中搜索任何条件文本
- Android中moveTo、lineTo、quadTo、cubicTo、arcTo详解(实例)
- OC特有语法—常用结构体
- JS 添加收藏 设为首页功能
- CodeForce 424C Magic Formulas
- js中运算符"=="与"==="的区别