搜公众号
推荐 原创 视频 Java开发 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库
Lambda在线 > 编程学与思 > 用多线程实现线程安全的取款

用多线程实现线程安全的取款

编程学与思 2018-05-14
举报



用多线程实现线程安全的取款

鸡汤常讲人要学会失去,遗憾才是完整,伤害是成长最宝贵的一课……那是因为我们别无选择。已经发生的一切,如果不给它一个温暖的意义,你又能怎样?强装欢笑的大人不必嘲讽痛哭的小孩不懂事,当我们一起对流星许愿时,都只祈祷健康快乐应有尽有。我祝愿你学会接受,也祝愿这项技能,永远没有用武之地。 by 八月长安

用多线程实现线程安全的取款


用多线程实现线程安全的取款

题目:小红和小明共同一个银行账户,账户中有1000元,他们每个人每次取100元,一共取10次。

   分析:在这个问题中,我们将用到多线程和同步代码块的知识,首先我们能看出,这个问题是两个人同时对一个数据进行操作

用多线程实现线程安全的取款

接下来我们思考如何同时操作那就意味着两个程序同时运行,也就意味着需要用多线程,本次我们将使用继承Thread的方式用多线程实现线程安全的取款

现在我们开始填写这个类中的内容,我们把这个线程看做是一个人,那么人在run()方法中将做什么事情?那就是取钱(方法)取几次那?我们定义去10次,根据这个逻辑我们开始定义我们去钱的方法。

那么在这个方法中,我们再去思考:我们要取钱,那么我们势必要先传入一个账户,返回先判断这个账户的余额,当余额满足要求是我们开始对这个账户余额进行修改,所以我们要调用它的setter和getter方法(重点:切记是对传入的账户的值进行修改)用多线程实现线程安全的取款

由于我们刚才提到了账户对象,所以我们对它进行创建,如下图用多线程实现线程安全的取款

最终我们在Test类中运行

用多线程实现线程安全的取款

将不同的线程的名称重新定义,然后调用start方法运行结果如下完成题目要求

关于上述同步代码块,要说的是,哪里对共有数据操作哪里就用锁封装起来,无论如何我们加同步代码块的目的就得为了让 可能同步操作的数据在被操作的那一刻,明确,只能被一个线程调用,这个才是同步代码块的核心,如果不加就会出现负数的问题。





版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《用多线程实现线程安全的取款》的版权归原作者「编程学与思」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

举报