多线程11/同步机制例题⭐

本文通过一个实例分析了多线程环境下银行账户存款的问题,揭示了线程安全问题,并使用Java的同步机制synchronized解决。描述了在初始代码存在线程不安全现象后,通过在deposit方法上添加synchronized关键字实现线程同步,从而确保了账户余额的正确性。
摘要由CSDN通过智能技术生成

例题:银行有一个账户。有两个储户分别向同一个账户存3000元,每次存1000,存3次。每次存完打印账户余额。

分析:
1.是否是多线程问题? 是,两个储户线程

2.是否有共享数据? 有,账户(或账户余额)

3.是否有线程安全问题? 有
4.需要考虑如何解决线程安全问题? 同步机制: 有三种方式。

解答:

先按照题意编写代码,此时的代码实现了共享数据存款,同时也出现了线程安全问题
注意代码中各个构造函数的作用

package com.dxc;

//账户
class Account{
   
    private double balance;
    //构造函数
    public Account(double balance) {
   
        this.balance = balance;
    }

    //存钱操作
    public void deposit(double amt){
   
        if (amt > 0){
   
            balance += amt;
            //添加风险
            try {
   
                Thread.sleep(1000);
            } catch (InterruptedException e) {
   
                e.printStackTrace();
            }

            System.out.println(Thread.currentThread().
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值