现在的位置: 首页 > 编程语言 > 正文

Java实现银行存取款

2020年02月13日 编程语言 ⁄ 共 2339字 ⁄ 字号 评论关闭

本文实例为大家分享了Java银行存取款的具体代码,供大家参考,具体内容如下

1.不加锁情况

运行结果:

代码:将加锁情况中加锁部分进行注释即可

2.加锁情况

运行结果

缓冲区代码

package Bank; import java.util.LinkedList; public class BankAccount { static double sum=1000; private LinkedList<Object> list = new LinkedList<>(); //存款 public void deposit() { synchronized(list) { System.out.print(list.size()); while(list.size()>1) { System.out.println("暂不支持存款"); try { // System.out.print("wait"); list.wait(); } catch (InterruptedException e) { e.printStackTrace(); //System.out.print("wait"); } } list.add(new Object()); int money=300; sum=sum+money; System.out.println(Thread.currentThread().getName()+"存入了"+money+"元"+"现在共有存款"+sum); list.notifyAll(); } } //取款 public void withdrawal() { synchronized(list) { while(list.size()==0) {// int money=50;// sum=sum-money; System.out.println(Thread.currentThread().getName()+"暂时不支持取款"); try { list.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } list.remove(); int money=200; if(sum>200) { sum=sum-money; System.out.println(Thread.currentThread().getName()+"取出了"+money+"元"+"现在共有存款"+sum); }else { System.out.println("账户余额不足"); } list.notify(); } } }

存款代码

package Bank; public class Deposit implements Runnable { private BankAccount bankAccount1; public Deposit() {} public Deposit(BankAccount bankAccount1) { this.bankAccount1=bankAccount1; } @Override public void run() { // TODO Auto-generated method stub while(true) { try { Thread.sleep(2000); bankAccount1.deposit(); } catch (InterruptedException e) { // TODO: handle exception e.printStackTrace(); } } }}

取款代码

package Bank; public class Withdrawal implements Runnable{ private BankAccount bankAccount; public Withdrawal() {} public Withdrawal(BankAccount bankAccount) { this.bankAccount=bankAccount; } @Override public void run() { // TODO Auto-generated method stub while(true) { try { Thread.sleep(3000); bankAccount.withdrawal(); } catch (InterruptedException e) { // TODO: handle exception e.printStackTrace(); } } }}

主函数代码

package Bank; public class Main { public static void main(String[] args) { BankAccount bankAccount1=new BankAccount(); Thread d1=new Thread(new Deposit(bankAccount1)); Thread d2=new Thread(new Deposit(bankAccount1)); Thread d3=new Thread(new Deposit(bankAccount1)); Thread w1=new Thread(new Withdrawal(bankAccount1)); Thread w2=new Thread(new Withdrawal(bankAccount1)); Thread w3=new Thread(new Withdrawal(bankAccount1)); d1.start(); d2.start(); d3.start(); w1.start(); w2.start(); w3.start(); }}

更多学习资料请关注专题《管理系统开发》。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

本文标题: Java实现银行存取款

以上就上有关Java实现银行存取款的全部内容,学步园全面介绍编程技术、操作系统、数据库、web前端技术等内容。

抱歉!评论已关闭.