Java實(shí)現(xiàn)銀行存取款
本文實(shí)例為大家分享了Java銀行存取款的具體代碼,供大家參考,具體內(nèi)容如下
1.不加鎖情況
運(yùn)行結(jié)果:

代碼:將加鎖情況中加鎖部分進(jìn)行注釋即可
2.加鎖情況
運(yùn)行結(jié)果

緩沖區(qū)代碼
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+"元"+"現(xiàn)在共有存款"+sum);
list.notifyAll();
}
}
//取款
public void withdrawal() {
synchronized(list)
{
while(list.size()==0) {
// int money=50;
// sum=sum-money;
System.out.println(Thread.currentThread().getName()+"暫時(shí)不支持取款");
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+"元"+"現(xiàn)在共有存款"+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();
}
}
}
}
主函數(shù)代碼
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();
}
}
更多學(xué)習(xí)資料請(qǐng)關(guān)注專題《管理系統(tǒng)開發(fā)》。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Java簡(jiǎn)單實(shí)現(xiàn)銀行ATM系統(tǒng)
- java實(shí)現(xiàn)簡(jiǎn)單銀行ATM系統(tǒng)
- Java實(shí)現(xiàn)簡(jiǎn)單銀行ATM功能
- Java實(shí)現(xiàn)銀行ATM系統(tǒng)
- Java 模擬銀行自助終端系統(tǒng)
- java代碼實(shí)現(xiàn)銀行管理系統(tǒng)
- java實(shí)現(xiàn)簡(jiǎn)單銀行管理系統(tǒng)
- java實(shí)現(xiàn)簡(jiǎn)單銀行家算法
- 以銀行取錢為例模擬Java多線程同步問題完整代碼
- Java實(shí)現(xiàn)基礎(chǔ)銀行ATM系統(tǒng)
相關(guān)文章
Java WebService 簡(jiǎn)單實(shí)例(附實(shí)例代碼)
本篇文章主要介紹了Java WebService 簡(jiǎn)單實(shí)例(附實(shí)例代碼), Web Service 是一種新的web應(yīng)用程序分支,他們是自包含、自描述、模塊化的應(yīng)用,可以發(fā)布、定位、通過web調(diào)用。有興趣的可以了解一下2017-01-01
string boot 與 自定義interceptor的實(shí)例講解
下面小編就為大家分享一篇string boot 與 自定義interceptor的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2017-12-12
使用idea的database模塊繪制數(shù)據(jù)庫er圖的方法
這篇文章主要介紹了使用idea的database模塊繪制數(shù)據(jù)庫er圖,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-07-07
java獲取ip地址與網(wǎng)絡(luò)接口的方法示例
這篇文章主要給大家介紹了關(guān)于利用java如何獲取ip地址與網(wǎng)絡(luò)接口的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-01-01
java實(shí)現(xiàn)XML增加元素操作簡(jiǎn)單示例
這篇文章主要介紹了java實(shí)現(xiàn)XML增加元素操作,結(jié)合簡(jiǎn)單實(shí)例形式分析了java針對(duì)xml格式數(shù)據(jù)的讀取、遍歷、創(chuàng)建等操作技巧,需要的朋友可以參考下2017-02-02
java對(duì)接支付寶支付項(xiàng)目的實(shí)戰(zhàn)記錄
最近公司有一個(gè)需求是接入第三方支付(微信&支付寶),我接到了支付寶支付,所以下面這篇文章主要給大家介紹了關(guān)于java對(duì)接支付寶支付項(xiàng)目的相關(guān)資料,需要的朋友可以參考下2022-06-06
SpringBoot后端進(jìn)行數(shù)據(jù)校驗(yàn)JSR303的使用詳解
這篇文章主要介紹了SpringBoot后端進(jìn)行數(shù)據(jù)校驗(yàn)JSR303的使用詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
java數(shù)據(jù)結(jié)構(gòu)基礎(chǔ):單,雙向鏈表
這篇文章主要介紹了Java的數(shù)據(jù)解構(gòu)基礎(chǔ),希望對(duì)廣大的程序愛好者有所幫助,同時(shí)祝大家有一個(gè)好成績(jī),需要的朋友可以參考下,希望能給你帶來幫助2021-07-07

