悲观锁和乐观锁机制 - Java基础

本文介绍了Java中的悲观锁和乐观锁机制,包括它们的概念、区别和应用场景。悲观锁假设每次读取都会发生冲突,使用时通常依赖数据库的锁机制,如synchronized。乐观锁则在数据读取时不加锁,更新时检查数据是否被修改,常通过版本控制或CAS实现。文章还对比了两者在性能和适用场景上的差异,并提供了Lock接口的基础使用案例。
摘要由CSDN通过智能技术生成

知识的广度来自知识的深度,学习如果不成体系那是多可怕的一件事儿,希望我们在未来的学习道路上坚守初心,不要给自己留下遗憾,以自己喜欢的方式生活,做自己喜欢做的事,宠爱自己,做一个独一无二的自己!

  • 对于文章中出现的任何错误请大家批评指出,会及时做出修改!
  • 有任何想要讨论和学习的问题可联系我:cittaksana@qq.com

一、资源和加锁

1、场景描述

多线程并发访问同一个资源问题,假如线程A获取变量之后修改变量值,线程C在此时也获取变量值并且修改,两个线程同时并发处理一个变量,就会导致并发问题。
在这里插入图片描述

这种并行处理数据库的情况在实际的业务开发中很常见,两个线程先后修改数据库的值,导致数据有问题,该问题复现的概率不大,处理的时候需要对整个模块体系有概念,才能容易定位问题。

2、演示案例

public class LockThread01 {
   
    public static void main(String[] args) {
   
        CountAdd countAdd = new CountAdd() ;
        AddThread01 addThread01 = new AddThread01(countAdd) ;
        addThread01.start();
        AddThread02 varThread02 = new AddThread02(countAdd) ;
        varThread02.start();
    }
}
class AddThread01 extends Thread {
   
    private CountAdd countAdd  ;
    public AddThread01 (CountAdd countAdd){
   
        this.countAdd = countAdd ;
    }
    @Override
    public void run() {
   
        countAdd.countAdd(30)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值