当前位置: 首页 > news >正文

Java 存储钱取钱作业

package testthread3;

public class testwork7next4 {

public static void main(String[] args) throws InterruptedException {

Account account = new Account("张三",200);

System.out.println("初始账户信息:" + account);

Thread1 thread1 = new Thread1(account,100);

Thread2 thread2 = new Thread2(account,50);

thread1.start();

thread2.start();

thread1.join();

thread2.join();

System.out.println("最终账户信息:" + account);

System.out.println("最终账户余额应为250元:" + account.getBalance());

}

}

class Account {

private String username;

private double balance;

public Account(String username, double balance) {

this.username = username;

this.balance = balance;

}

public synchronized void cunkuan (double amount){

if (amount>0){

balance += amount;

System.out.println("存款后余额:"+balance);

}

}

public synchronized void qukuan (double amount){

if (amount > 0 && amount<= balance){

balance -= amount;

System.out.println("取款后余额:"+ balance);

}else if(amount > balance){

System.out.println("取款是白!余额不足");

}

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public double getBalance() {

return balance;

}

public void setBalance(double balance) {

this.balance = balance;

}

@Override

public String toString() {

return "Account{" +

"username='" + username + '\'' +

", balance=" + balance +

'}';

}

}

class Thread1 extends Thread{ //存款线程

private Account account;

private double amount;

public Thread1(Account account,double amount){

super("存款线程1");

this.account = account;

this.amount = amount;

}

public void run(){

account.cunkuan(amount);

System.out.println("操作完成");

}

}

class Thread2 extends Thread { // 取款线程

private Account account;

private double amount;

public Thread2(Account account, double amount) {

super("取款线程B");

this.account = account;

this.amount = amount;

}

public void run() {

System.out.println(getName() + " 开始操作...");

account.qukuan(amount);

System.out.println(getName() + " 操作完成");

}

}

http://www.jsqmd.com/news/105286/

相关文章:

  • MySQL终端常用命令
  • SpringBoot集成Spring Statemachine(状态机)实战教程
  • Canal-deployer1.1.8监听mysql数据变化(windows)
  • B站数据分析终极指南:一键掌握UP主内容趋势
  • 揭秘Docker容器间通信难题:智能Agent互联的3种高阶解决方案
  • 如何用3步实现企业Agent的Docker权限最小化?运维必看
  • 程序员面试必备的Java八股文,适合所有的Java求职者!
  • 终极视频修复指南:5步快速拯救损坏的MP4文件
  • 选择排序--自学笔记
  • 金仓数据库:不止于兼容,以智能部署、字段级安全与代码级洞察重塑企业级数据库体验
  • 水质监测“保真”首选:万维盈创户外智能水质采样站
  • 【Q#量子编程效率革命】:揭秘VSCode重构工具的5大核心技巧
  • Open Library 终极指南:三步打造你的专属数字图书馆
  • Utilizing 英文单词学习
  • 揭秘VSCode与量子硬件连接失败原因:90%开发者忽略的3个关键点
  • 选专业、转行为什么推荐学网络安全?看完这篇你就知道了!
  • VSCode日志分析实战(量子算法性能瓶颈的4个信号)
  • 姿态搜索终极指南:5步构建智能人体动作分析系统
  • 异常传递失败?教你如何在Q#中精准捕获Python异常,90%的人都忽略了这一点
  • ModEngine2游戏模组开发:从零开始的5步实战指南
  • NSTool深度解析:Switch文件格式的终极处理指南
  • Meta Llama模型访问权限申请与使用指南
  • 【量子计算开发新纪元】:VSCode模拟器调试的7个关键优势
  • 网安人才缺口480万!3个相关专业特点大不同,一文分清
  • 高效OpenUSD场景导出:USDZ与glTF格式深度对比与转换指南
  • 面试官:缓存淘汰要怎么设计才能保证命中率?
  • 专为极客而生的软件无线电平台 ANTSDR E310 vs Pluto SDR对比测评
  • 建议Java后端面试都准备到这种程度再去...
  • 【高效运维必备技能】:如何实时监控并解析Docker Compose中Agent服务日志
  • VSCode + Q#开发环境搭建(量子计算依赖项完整清单)