Java多线程银行存取款程序
来源:互联网 发布:人工智能主题的基金 编辑:程序博客网 时间:2024/05/16 18:17
package com.rr.synchonized;
public class Account{
public Account(String n ,float a){
holderName = n;
amount = a;
}
public synchronized void deposit(float a){
amount +=a;
}
public synchronized void withdraw(float a){
if(a <= amount){
System.out.println("取出"+a+"元");
amount -= a;
}else{
System.out.println("余额不足");
}
}
public float checkBank(){
return amount;
}
String holderName;
float amount;
public static void main(String args[]){
Account ac = new Account("Li",300);
TestAccount1 ta = new TestAccount1(ac);
//TestAccount2 tb = new TestAccount2(ac);
Thread d1 = new Thread(ta);
Thread d2 = new Thread(ta);
d1.start();
d2.start();
}
}
class TestAccount1 implements Runnable{
public TestAccount1(Account ac){
this.account1 = ac;
}
public void run(){
account1.withdraw(200);
System.out.println("余额为"+account1.checkBank());
}
private Account account1;
}
class TestAccount2 implements Runnable{
public TestAccount2(Account ac){
this.account2 = ac;
}
public void run(){
account2.deposit(200);
System.out.println("余额为"+account2.checkBank());
}
private Account account2;
public class Account{
public Account(String n ,float a){
holderName = n;
amount = a;
}
public synchronized void deposit(float a){
amount +=a;
}
public synchronized void withdraw(float a){
if(a <= amount){
System.out.println("取出"+a+"元");
amount -= a;
}else{
System.out.println("余额不足");
}
}
public float checkBank(){
return amount;
}
String holderName;
float amount;
public static void main(String args[]){
Account ac = new Account("Li",300);
TestAccount1 ta = new TestAccount1(ac);
//TestAccount2 tb = new TestAccount2(ac);
Thread d1 = new Thread(ta);
Thread d2 = new Thread(ta);
d1.start();
d2.start();
}
}
class TestAccount1 implements Runnable{
public TestAccount1(Account ac){
this.account1 = ac;
}
public void run(){
account1.withdraw(200);
System.out.println("余额为"+account1.checkBank());
}
private Account account1;
}
class TestAccount2 implements Runnable{
public TestAccount2(Account ac){
this.account2 = ac;
}
public void run(){
account2.deposit(200);
System.out.println("余额为"+account2.checkBank());
}
private Account account2;
}
若无synchronized关键字,那么运行结果为:
取出200.0元
余额为100.0
取出200.0元
余额为-100.0
0 0
- Java多线程银行存取款程序
- Java多线程银行取款
- Java线程之银行存取款
- 多线程互斥锁问题(多线程模拟银行存取款)
- Java-多线程 银行取款小练习
- java 线程同步问题之银行存取款问题
- java 银行存取款模型的线程同步问题
- 【Java】银行中用户存取款业务的实现
- 银行ATM存取款机
- 银行ATM机存取款
- 银行取款程序 线程
- 用JAVA中的多线程示例银行取款问题
- 用JAVA的多线程实现银行取款的问题
- java线程存取款
- java多线程问题中简单的存取款实现
- Axis+Tomcat模拟一个银行存取款
- 简易银行存取款系统-建立数据库
- 数据结构课程设计《银行存取款系统》
- SOJ.分数排名查询
- CSDN-MarkDown编辑器使用手册(4)--- 数学公式
- msql 导出
- 获取已经安装软件列表
- 过却三世又一生
- Java多线程银行存取款程序
- Storm开发打包问题:Ant编译把第三方jar打入打包的JAR中
- 在centos中安装jenkins master测试环境
- 页面中调用函数--之${fn:}内置函数
- 哪家嘛动漫什么呢
- Enum枚举序列化JSON value to string问题
- hdu 5011(博弈)
- extjs Ext.XTemplate
- 兔子-ps抠图