广告
返回顶部
首页 > 资讯 > 后端开发 > Python >java多线程实现取款小程序
  • 192
分享到

java多线程实现取款小程序

2024-04-02 19:04:59 192人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

最近java学到了多线程编程中的线程同步问题,教材中的取款小程序对于理解线程和线程同步很有帮助,在此将其补充完善. 1、建立java类 这里建立了三个java类,第一个Accoun

最近java学到了多线程编程中的线程同步问题,教材中的取款小程序对于理解线程和线程同步很有帮助,在此将其补充完善.

1、建立java类

这里建立了三个java类,第一个Account类,用于封装账户中的各种信息;第三个DrawThread类用于实现线程体;第二个类主要封装了主函数

2、Account类

public class Account {
    //封装账户编号,账户余额和两个成员变量
    private String accountNo;
    private double balance;

    public Account(){};
    public Account(String accountNo,double balance){
        this.accountNo=accountNo;
        this.balance=balance;
    }

    public void setAccountNo(String accountNo)
    {
        this.accountNo=accountNo;
    }
    public void setBalance(double balance){
        this.balance=balance;
    }

    public String getAccountNo(){
        return accountNo;
    }
    public double getBalance(){
        return balance;
    }

    public int hashCode(){
        return accountNo.hashCode();
    }

    public boolean equals(Object obj){
        if(this==obj){
            return true;
        }
        if (obj!=null&&obj.getClass()==Account.class){
            Account target=(Account)obj;
            return target.getAccountNo().equals(accountNo);
        }
        return false;
    }

}

3、DrawThread类

public class DrawThread extends Thread {
    //模拟用户账户
    private Account account;
    //当前取钱线程所希望的取钱数
    private double drawAmount;

    public DrawThread(String name, Account account, double drawAmount) {
        super(name);
        this.account = account;
        this.drawAmount = drawAmount;
    }

    //当多个线程修改同一个共享数据时,将涉及数据安全问题
    public void run() {
        //使用account作为同步监视器,任何线程进入下面同步代码块之前
        //必须先获得对account账户的定——其他线程无法获得锁,也就无法修改它
        synchronized (account) {
            if (account.getBalance() >= drawAmount) {
                //吐出钞票
                System.out.println(getName() + "取钱成功!吐出钞票:" + drawAmount);
        
                //修改余额
                account.setBalance(account.getBalance() - drawAmount);
                System.out.println("\t余额为:" + account.getBalance());
            } else {
                System.out.println(getName() + "取钱失败!余额不足!");
            }
        }
    }
}

4、DrawTest类

public class DrawTest {
    public static void main(String[] args){
        //创建一个账户
        Account acct=new Account("1234567",1000);
        //模拟两个线程对同一个账户取钱
        new DrawThread("jack",acct,800).start();
        new DrawThread("rose",acct,800).start();
    }
}

运行结果:

以上程序有一点需要注意,就是用到了同步代码块。它可以解决run()方法不具备同步安全性(即当两个线程同时发送请求时即会造成异常)

同步代码块:

synchronized (obj){
//需要执行的代码
}

如果我们去掉run()方法中的同步代码块,继续运行

Account acct=new Account("1234567",1000);
new DrawThread("jack",acct,800).start();
new DrawThread("rose",acct,800).start();

(银行账户一共1000元,Jack和rose分别对同一账户取钱)

运行结果:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: java多线程实现取款小程序

本文链接: https://www.lsjlt.com/news/149220.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • java多线程实现取款小程序
    最近java学到了多线程编程中的线程同步问题,教材中的取款小程序对于理解线程和线程同步很有帮助,在此将其补充完善. 1、建立java类 这里建立了三个java类,第一个Accoun...
    99+
    2022-11-13
  • java多线程怎么实现取款小程序
    今天小编给大家分享一下java多线程怎么实现取款小程序的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1、建立java类这里建...
    99+
    2023-06-30
  • Java—实现多线程程序 | 入门
      目录 一、前言 二、基本概念 进程  线程 三、Java多线程实现 java.lang.Thread类 获取线程名字及对象 获取main进程名 Thread currentThread() 四、线程优先级  设置优先级  一、前言 前...
    99+
    2023-09-07
    java 开发语言 Java多线程程序 多线程 Thread类
  • C++ SOCKET多线程实现聊天小程序
    本文实例为大家分享了C++ SOCKET多线程实现聊天小程序的具体代码,供大家参考,具体内容如下 TCP/IP协议与SOCKET 什么是网络协议? 计算机网络中,各个实体之间的数据交...
    99+
    2022-11-12
  • C++ SOCKET多线程怎么实现聊天小程序
    本篇内容介绍了“C++ SOCKET多线程怎么实现聊天小程序”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!TCP/IP协议与SOCKET什么...
    99+
    2023-06-08
  • Java中怎么实现一个多线程程序
    Java中怎么实现一个多线程程序,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Java多线程程序设计详细解析一、理解Java多线程Java多线程是这样一种机制,它允许在程序中并...
    99+
    2023-06-17
  • C++ SOCKET多线程实现聊天小程序的方法
    本篇内容主要讲解“C++ SOCKET多线程实现聊天小程序的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++ SOCKET多线程实现聊天小程序的方法”吧!本文实例为大家分享了C++ SO...
    99+
    2023-06-20
  • 多线程python的实现及多线程有序性
    目录前言一、多线程运行无序问题二、“join方法”解决多线程运行无序问题三、threading.Thread()的常用参数总结前言 多线程一般用于同时调用多个...
    99+
    2022-11-11
  • 创建java多线程程序
    目录创建多线程程序的第一种方式:创建Thread类的子类实现步骤:创建多线程程序的第二种方式:实现RunnabLe接口java.Lang.Thread类的构造方法实现步骤:实现Run...
    99+
    2022-11-12
  • 怎么在Java中实现多线程排序
    这期内容当中小编将会给大家带来有关怎么在Java中实现多线程排序,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。java基本数据类型有哪些Java的基本数据类型分为:1、整数类型,用来表示整数的数据类型。2...
    99+
    2023-06-14
  • 小程序如何实现多进程
    这篇文章将为大家详细讲解有关小程序如何实现多进程,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。前言小程序这个名词相信大家已经不陌生了,继微信之后,阿里巴巴、百度、头条等大厂相继实现了自己的小...
    99+
    2023-06-04
  • python多线程及多线程有序性怎么实现
    这篇文章主要介绍了python多线程及多线程有序性怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python多线程及多线程有序性怎么实现文章都会有所收获,下面我们一起来看看吧。前言多线程一般用于同时调用...
    99+
    2023-07-02
  • Java如何实现多线程、线程同步
    这篇文章主要介绍了Java如何实现多线程、线程同步的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java如何实现多线程、线程同步文章都会有所收获,下面我们一起来看看吧。1 多线程1.1 进程进程:是正在运行的程...
    99+
    2023-06-30
  • java如何实现多线程的顺序执行
    场景 编写一个程序,启动三个线程,三个线程的name分别是A,B,C;,每个线程将自己的ID值在屏幕上打印5遍,打印顺序是ABCABC... 使用 synchronized 实现 ...
    99+
    2022-11-12
  • java怎么实现多线程的顺序执行
    这篇文章主要介绍java怎么实现多线程的顺序执行,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!场景编写一个程序,启动三个线程,三个线程的name分别是A,B,C;,每个线程将自己的ID值在屏幕上打印5遍,打印顺序是A...
    99+
    2023-06-15
  • java如何实现多线程
    Java多线程是Java高级特性之一,通过多线程,我们可以实现多任务同时协同工作,在一定情况下提升程序效率,但是Java多线程仍要慎重使用。 (推荐学习:java课程)首先第一点,Java多线程需要较高的编码技巧,一...
    99+
    2019-06-27
    java教程 java
  • java中多线程的实现
    第一种方式,定义Thread类的子类://第一种方法 public class MyThread extends Thread { @Override public void run() { String n...
    99+
    2020-01-08
    java教程 java 多线程 实现
  • java多线程如何实现
    java实现多线程的方法:(推荐:java视频教程)方式一:继承Thread类的方式创建一个继承于Thread类的子类重写Thread类中的run():将此线程要执行的操作声明在run()创建Thread的子类的对象调用此对象的start(...
    99+
    2022-02-13
    java
  • Java多线程CountDownLatch的实现
    介绍 CountDownLatch是一个同步辅助类,它允许一个或多个线程一直等待直到其他线程执行完毕才开始执行。 用给定的计数初始化CountDownLatch,其含义是要被等待执行...
    99+
    2022-11-13
  • 微信小程序如何实现支付及退款
    这篇文章将为大家详细讲解有关微信小程序如何实现支付及退款,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一. 支付支付主要分为几个步骤:前端携带支付需要的数据(商品id,购...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作