java多线程存钱,取钱例子
来源:互联网 发布:高斯朴素贝叶斯 数据 编辑:程序博客网 时间:2024/04/27 21:17
类似javasheng生产者和消费者,同步保证数据的一致。利用wait()和notify()方法来实现线程间等待和调用。接口定义一个方法,money方法来实现接口,初始化对象,初始化金额。存钱和取钱类分别定义bank的字段。要存钱和取钱,,就要先调用接口的实现类。
TestBank2.java
package com.bank.test;public class TestBank2 {public static void main(String[] args) {Money m =new Money(new SourceMoney(){public void sourceMoney(Bank a) {// TODO Auto-generated method stub//Bank b = new Bank();cun c =new cun(a);get g =new get(a);new Thread(c).start();new Thread(g).start();}});new Thread(m).start();}}
money.java
package com.bank.test;public class Money implements Runnable {private SourceMoney sourcemoney;/** * @param sourcemoney */public Money(SourceMoney sourcemoney) {super();this.sourcemoney = sourcemoney;}public void run() {// TODO Auto-generated method stubBank b= new Bank();System.out.println("初始化金额");sourcemoney.sourceMoney(b);}}SourceMoney.java
package com.bank.test;public interface SourceMoney {public void sourceMoney(Bank b);}get.java
package com.bank.test;public class get implements Runnable {private Bank bank;/** * @param bank */public get(Bank bank) {super();this.bank = bank;}public void run() {// TODO Auto-generated method stubwhile(true){bank.get();}}}cun.java
package com.bank.test;public class cun implements Runnable {private Bank bank;/** * @param bank */public cun(Bank bank) {super();this.bank = bank;
Bank.java
<pre name="code" class="java">package com.bank.test;public class Bank {private int a=200;public synchronized void cun(){System.out.println("存钱前原来的钱"+a);if(a>=1000){System.out.println("停止存钱");try {this.wait();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}try {Thread.sleep(200);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}a=a+100;System.out.println("存钱后的金额"+a);this.notify();}public synchronized void get(){if(a<=0){System.out.println("不能再取钱了");try {this.wait();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}System.out.println("取钱前账户所剩的钱"+a);a=a-50;try {Thread.sleep(20);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println("取钱后的账户"+a);this.notify();}}
0 0
- java多线程存钱,取钱例子
- java的多线程例子(儿子老爸取存钱)
- 存钱取钱线程
- 线程通信---银行存钱取钱问题
- 线程简单地存钱--取钱操作
- JAVA模拟银行存钱,取钱操作以及计算利息操作
- 3-3-Java多线程-案例-银行存钱&同步函数
- 实现一个储蓄账户对象的存钱取钱操作
- 实现一个类可以记录账户余额、存钱、取钱、计算利息
- 利用线程同步模拟一人向银行存钱,一人从银行取钱。
- 存钱
- 存钱
- java多线程小例子
- java多线程例子
- JAVA多线程经典例子
- java多线程例子
- java多线程例子
- java多线程例子
- BestCoder Round #65 HDU 5593 ZYB's Tree (树形DP)
- POJ 2251.Dungeon Master(BFS)
- javascript权威指南学习笔记-函数闭包(十)
- Java-----两个日期之间相差天数和相隔天数
- ISS 网站发布没数据解决
- java多线程存钱,取钱例子
- Windows(MFC)消息映射
- (解题报告)HDU2007---平方和与立方和
- UVALive 6925Volume of Revolution(数学题)
- Windows系统下安装Node.js(2)
- 正则表达式30分钟入门教程
- (解题报告)HDU2008---数值统计
- docker私有仓库搭建完整记录(直接pull方式)
- Android流量统计知识点