解决方案 »
- 读取文本时,\r\n是不是成对出现的啊?
- 使用apt时需在classpath里设置tools.jar,怎么设置?
- 为什么JBuilder9中的源代码是旧事件机制呀?
- 新手,问Servlet同JavaBean的区别在哪。我怎样判断一个class什么
- 字符串问题
- java里面产生消息框的函数是什么?
- JB的鼠标滚动插件jbWheel.dll放在JB哪个文件夹下啊?
- 哪里有 java.nio.*的包????????????
- 请大牛帮小弟解决一个问题:MyEclipse的DB browse
- [Help]新人学习代码时遇到编译错误
- [SWING]容器类组件渲染子组件的原理
- 编译出来找不到符号 是什么问题
import java.math.*;class MakeAndUse
{
public static void main(String[] args)
{
Bank bank = new Bank();
Father father = new Father(bank);
Son son = new Son(bank);
father.start();
son.start();
}
}class Father extends Thread
{
Bank bank; Father(Bank bank)
{
this.bank = bank;
} public void run()
{
float radom;
for (int i = 1; i <= 10; i++)
{
radom = (float) (int) (Math.random() * 1000);// 爸爸往银行随机的存入现金
bank.MakeMoney(radom);
}
}
}class Son extends Thread
{
Bank bank; Son(Bank bank)
{
this.bank = bank;
} public void run()
{
for (int i = 1; i <= 10; i++)
{
bank.UseMoney();
}
}
}class Bank
{
float money;
boolean hasMoney = false;
int count = 0; public synchronized void MakeMoney(float money)
{
if (!hasMoney)// 如果银行没钱,那就赚钱往银行存入
{
this.money += money;
hasMoney = true;// 告诉儿子银行有钱了
count++;
System.out.println("Father MakeMoney " + count + " : [ " + money
+ " ] dollar");
notify();// 叫醒儿子去花钱
} // 如果银行有钱的情况下
try
{
wait();// 等待儿子把钱花掉
}
catch (Exception e)
{
}
} public synchronized float UseMoney()
{
if (!hasMoney)// 如果银行没钱
{
try
{
wait();// 等待爸爸赚钱存入银行
}
catch (Exception e)
{
}
} // 如果银行有钱的情况下
hasMoney = false;// 告诉爸爸银行没钱了
notify(); // 儿子叫醒爸爸去赚钱
float dollar = money;
money -= money;
System.out.println("Son UseMoney : [ " + dollar + " ] dollar \n");
return dollar;// 儿子把银行所有的钱都花掉
}}