首页 > 其他分享 >简易的取款多线程

简易的取款多线程

时间:2024-03-24 20:14:30浏览次数:24  
标签:Account Thread money cash 简易 new 多线程 public 取款

  1. 首先建立一个class Account类,设置全局变量money,这个变量会被所有的线程使用。设置条件。

class Account {

public static int money = 3000; //建立全局变量

public synchronized void taking(int m) {
if(m > money){
System.out.println("余额不足");
}else {
System.out.println( Thread.currentThread().getName() + "账户当前余额:" + money);
System.out.println(Thread.currentThread().getName() + "账户取走金额:" + m);
money1 = money - m;
System.out.println(Thread.currentThread().getName() + "当前剩余金额:" + money);
}
}
}

  1. 建立person类,并接入Runnable接口。将Account对象作为自身的构造器内的参数,设置 cash变量作为取钱的变量。

class person implements Runnable{

    Account account;
    int cash;
    public person (Account account,int cash){//传递参数
        this.account = account;
        this.cash = cash;
    }
}
  1. 对Runnable接口方法重写,引用Account类的方法并传递参数cash。

@Override
public void run() {
account.taking(cash);
}
}

  1. 新建Test类测试,首先new一个Account的对象

public class Test {
public static void main(String[] args) {
Account a = new Account();

  1. 创建线程接口的对象 new person(),并传递参数将Account类对象a作为Object类,传递cash参数,接着创建多线程Thread对象。

Thread t1 = new Thread(new person(a, 2000)); //创建线程接口对象的thread对象。
Thread t2 = new Thread(new person(a,1000));

  1. 对Thread类对象设置名称,启动多线程。

t1.setName("微信");
t2.setName("支付宝");

    t1.start();
    t2.start();

7(注). 由于多线程的并行性,两条线程会争相占用CPU资源,因此需要进行上锁操作。在Account类方法中:public synchronized void taking,就可以使
程序在完成一个线程操作时再进行下一个。一个方法对应一个锁,锁的是一个对象,如果是 static的方法则是对该类的所有实例化对象都上锁。同时也可以用于代码区的上锁。

如果是针对对象要加同步锁,就加在方法上,如果是针对某一段代码加同步锁,直接在代码块加同步锁。

标签:Account,Thread,money,cash,简易,new,多线程,public,取款
From: https://www.cnblogs.com/460759461-zeze/p/18092923

相关文章

  • JAVAEE——多线程的设计模式,生产消费模型,阻塞队列
    文章目录多线程设计模式什么是设计模式单例模式饿汉模式懒汉模式线程安全问题懒汉模式就一定安全吗?锁引发的效率问题jvm的优化引起的安全问题阻塞队列阻塞队列是什么?生产消费者模型阻塞队列实现消费生产者模型可能遇到的异常多线程设计模式什么是设计模式首先我......
  • 【C++】Linux多线程开发
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录3.1线程概述3.2创建线程3.3、线程终止3.4连接已经终止线程3.5线程的分离3.6线程取消3.7线程属性3.8线程同步3.9互斥锁3.10死锁3.11读写锁3.12生产者和消费者模型3.13条件......
  • LaTex学习实践(简易快速LaTex上手例子)
    目录前言正文完全参考前言这篇博客完全是博客https://blog.csdn.net/NSJim/article/details/109066847?spm=1001.2014.3001.5506的实践产物因为写的太好了,所以我进行了实践(overleaf平台)所有的代码和图片我已上传,下载后,上传到自己的overleaf平台即可编......
  • ftp多线程下载工具
    //代码类似https多线程下载,整体实现逻辑类似,区别比较大的是curl_opt的相关参数设置不一样#include<iostream>#include<fstream>#include<curl/curl.h>#include<pthread.h>#include<sys/mman.h>#include<sys/stat.h>#include<fcntl.h>#include<sys......
  • java多线程(超详细讲解)下篇
    本章继续讲多线程目录一、线程同步1、为什么需要线程同步二、如何实现线程同步1、同步代码块2、同步方法3、线程同步特征三、线程安全的类型1、ArrayList是常用的集合类型,它是否线程安全的呢?2、对比Hashtable和HashMap1、是否线程安全2、效率比较3、对比StringBuffe......
  • https多线程下载代码
    这里使用了curl网络库和使用多线程来下载对应https链接的文件对应的.h头文件:#pragmaonce#include<iostream>#include<fstream>#include<curl/curl.h>#include<pthread.h>#include<sys/mman.h>#include<sys/stat.h>#include<fcntl.h>#......
  • 是时候来唠一唠synchronized关键字了,Java多线程的必问考点!
    写在开头在之前的博文中,我们介绍了volatile关键字,Java中的锁以及锁的分类,今天我们花5分钟时间,一起学习一下另一个关键字:synchronized。synchronized是什么?首先synchronized是Java中的一个关键字,所谓关键字,就是Java中根据底层封装所赋予的一种具有特殊语义的单词,而synchronized......
  • UE5中简易的UI管理框架(c++版,UE5.1)
    需求说明:在UE项目开发中,当UI界面较多的时候,就需要有一个管理功能出现,负责UI的生成、销毁、禁用等功能。基于此需求,采用栈先进后出的数据接口,编写了一个简易的UI管理框架。功能说明:1.支持UI的自动创建2.支持UI的按开启顺序关闭3.支持一件关闭所有UI4.支持开启当前UI后,禁......
  • ssm/php/node/python银行存取款管理系统
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表 系统的选题背景和意义背景:在当今社会,随着经济的飞速发展和人们生活水平的不断提高,对于资金管理的需求也日益增长。个人及企业对于资金的存取、转账、支付等操作变得频繁而复杂。传......
  • 数据清洗使用Parallel 多线程
    一.概述在开发数据清洗时,ES数据集有600w条,每一条的子对象又有几十条,需要拿到子对象去重后的集合,使用分批提取ES数据,共535批。开始使用List来操作,关键代码如下:varspecListAll=newList<SpecInfo>();for(inti=0;i<batchCount;i++)......