题目是:编写程序实现线程的同步.假设一个银行的ATM机,它可以允许用户存款也可以取款.现在一个账户上有200元,用户A和用户B都拥有在这个账户上存款和取款的权利.用户A将存入100元...

题目是:编写程序实现线程的同步.假设一个银行的ATM机,它可以允许用户存款也可以取款.现在一个账户上有200元,用户A和用户B都拥有在这个账户上存款和取款的权利.用户A将存入100元,而用户B将取出50元,那么最后账户的存款应该是250元。求代码

那位大哥大姐会做啊?我的是

//利用线程同步实现模拟银行取款和存款

class Account

{

private static int cunqian = 200;

String name;

static float amount;

static float bmount;

public Account(String name,float amount,float bmount)

{

this.name=name;

this.amount=amount;

this.bmount=bmount;

}

public synchronized static void deposit(float amt)

{

float tmp = amount;

tmp += amt;

try

{

Thread.sleep(10);//模拟其它处理所需要的时间,比如刷新数据库等

}

catch (InterruptedException e)

{

}

amount = tmp;

}

public synchronized static void withdraw(float bmt)

{

float tmp = bmount;

tmp -= bmt;

try

{

Thread.sleep(10);//模拟其它处理所需要的时间,比如刷新数据库等

}

catch (InterruptedException e)

{

}

bmount = tmp;

}

public static float getBalance()

{

return (amount+bmount);

}

}

class Customer extends Thread

{ public void run()

{

for(int i=0;i<=1;i++)

Account.deposit(100.0f);

Account.withdraw(50.0f);

}

}

public class AccountTest

{

public static void main(String[] args)

{

Customer customerA=new Customer();

Customer customerB=new Customer();

customerA.start();

customerB.start();

System.out.println();

System.out.println("最后总钱数:" + Account.getBalance());

}

}

运行结果为0,谁能帮我改正一下。

展开

java多线程银行取钱_用java线程同步实现银行取款和存款。相关推荐

  1. Java多线程练习--取钱

    1.需求: //        小明和小红是一对夫妻,他们有一个共同的账户,余额是10万元,模拟2人同时去取钱10万. //        分析: //        1:需要提供一个账户类,创建一个 ...

  2. JAVA多线程----用--取钱问题1

    "生产者-消费者"模型,也就是生产者线程只负责生产,消费者线程只负责消费,在消费者发现无内容可消费时则睡觉.下面举一个比较实际的例子--生活费问题. 生 活费问题是这样的:学生每月 ...

  3. java多线程遇到的问题_关于Java多线程遇到的问题.

    1.最近在学习Java多线程,看到视频中要实现一个类似闹钟和小明的情景, 要求闹钟响,小明关闹钟, 三秒后闹钟再响,小明再关, 重复10次程序结束. 不知道为什么我的程序小明只能输出一次. publi ...

  4. java中负数取余数_数学 - java如何用负数进行模数计算?

    数学 - java如何用负数进行模数计算? 我做模数错了吗? 因为在Java -13 % 64应该评估为-13,但我得到51. 14个解决方案 98 votes 负数模数的两个定义都在使用 - 一些语 ...

  5. JAVA——多线程——实现n个共享数据的线程同步

    实验目的:实现n个共享数据的线程同步 代码:` package xiancheng;class ShareData{private char[] c=new char[4]; //n=4,可调publ ...

  6. java多线程学习二、安全与不安全示例:12306买票和银行取钱、java内存模型、内存可见性、线程同步块和方法

    文章目录 前言 1. 什么是块,分为几种 2. 静态块与构造块的区别 一. 举例说明:并发情况下,线程不安全 1. 示例1:unsafe12306取票 2. 示例2:unsafe银行取钱 二.线程不安 ...

  7. java银行安全性_Java使用同步方法解决银行取钱的安全问题案例分析

    本文实例讲述了Java使用同步方法解决银行取钱的安全问题.分享给大家供大家参考,具体如下: 一 点睛 与同步代码块对应,Java的多线程安全支持还提供了同步方法,同步方法就是使用synchronize ...

  8. java银行取款_Java写简单的银行取钱系统

    按ctrl+a 选中所有的代码删除,再复制下面的代码输入即可 import java.util.Scanner; public class 简单的银行取钱系统 //class的名字可以自己新建和这个一 ...

  9. Java线程安全和线程同步——以银行取钱为例

    Java线程安全和线程同步(银行取钱案例) 一.线程安全问题 案例:银行多用户操作同一账户 public class SafeBank {public static void main(String[ ...

最新文章

  1. 图神经网络(Graph Neural Networks,GNN)综述
  2. next用法C语言,C语言可变参数的使用
  3. c++ 0x8000ffff灾难性故障_《可靠性设计》——故障模式影响分析
  4. QT+FFMPEG实现视频播放
  5. SAFEARRAY使用方法示例
  6. 写给自己看的HTML、CSS、XHTML指南 八
  7. Javascript Math.ceil与Math.round与Math.floor区别
  8. oracle时间查询
  9. Newtonsoft.Json的使用
  10. iview组件 eslint校验出错 Parsing error: x-invalid-end-tag
  11. 利用C Free3.5 本身获得自身注册码
  12. android内存碎片问题优化梳理
  13. 颜色名称及色样表(HTML版)
  14. 新能源汽车智能制造工控安全解决方案
  15. 百度小程序html转码,百度小程序转换工具
  16. 计算机关机快捷图标,七大电脑关机快捷方式,知道3种以上都是大神!
  17. 夏天来了,教你怎么选西瓜
  18. Linux-C 简单的C语言日志库
  19. 微信小程序OCR插件使用指南
  20. matlab中figure图片大小修改

热门文章

  1. 电子计算机的图片放大,图像缩放
  2. 算法课设第三题:3.Luck 的旅行计划(最短路径算法)
  3. Chapter002[SAS DATA步之全解密-01]
  4. c语言算法之贪心算法之加油站问题
  5. 分析无线鼠标无反应的几点原因
  6. 类似搜狐视频app视频列表播放
  7. 6月09日国内四大证券报刊头版内容精华摘要
  8. Day51python Django 多表操作 聚合查询、分组查询、F查询、Q查询
  9. mysql 错误代码1130_解决远程连接mysql错误1130代码的方法
  10. IT民工,去除眼部细纹的24小时法则(熬夜的你一定要试试哦)