Java实现银行存取款

网友投稿 323 2022-12-18


Java实现银行存取款

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

1.不加锁情况

运行结果:

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

2.加锁情况

运行结果

缓冲区代码

package Bank;

import java.util.LinkedList;

public class BankAccount {

static double sum=1000;

private LinkedList 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)gbnwEqp

{

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.outhttp://.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();

}

}

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


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java文件下载代码实例(单文件下载和多文件打包下载)
下一篇:java代码实现银行管理系统
相关文章

 发表评论

暂时没有评论,来抢沙发吧~