Java线程安全解决之一

线程安全:多个线程同时操作同一个共享资源的时候可能会出现的业务问题
出现的原因:存在多线程同时访问共享资源且存在修改该资源
解决:线程同步 思想为:加锁,让多个线程实现先后依次访问贡献资源。

同步代码块

作用:把出现线程安全问题的核心代码进行上锁
原理:每次只能一个线程进入,执行完毕后自动解锁,其他线程才可以执行

锁对象要求:

锁对象只要对当前同时执行的线程来说是同一个对象既可,如果用任意唯一的锁会影响其他无线线程的执行
规范上: 建议使用共享资源作为锁对象
对于实例方法建议使用this作为锁对象
对于静态方法建议使用字节码 (类名.class)对象作为锁对象

synchronized (this) {
        // 2、判断余额是否足够
        if(this.money >= money){
            // 钱够了
            System.out.println(name+"来取钱,吐出:" + money);
            // 更新余额
            this.money -= money;
            System.out.println(name+"取钱后,余额剩余:" + this.money);
        }else{
            // 3、余额不足
            System.out.println(name+"来取钱,余额不足!");
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值