多线程之锁策略

在这里插入图片描述

作者简介: zoro-1,目前大二,正在学习Java,数据结构,javaee等
作者主页: zoro-1的主页
欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖

多线程之锁策略

锁策略定义

锁策略是指在多线程或多进程环境中,用于控制共享资源并发访问的一种机制。它可以确保在同一时间只有一个线程或进程可以访问共享资源,从而避免竞争条件和数据不一致的问题。(锁内部处理加锁冲突涉及的一些不同解决方法)

锁策略

1.乐观锁与悲观锁

乐观锁:假设加锁冲突的概率是很小的,加锁前准备工作很少,所以加锁速度很快,容易出现一些不必要的问题,容易造成cpu的损耗。
悲观锁:假设加锁冲突的概率是很小的,加锁前准备工作很多,所以加锁速度很慢,不容易出现问题。

2.轻量级锁和重量级锁

轻量级锁:加锁开销小,加锁速度快
重量级锁:加锁开销大,加锁速度慢

3.自旋锁和挂起等待锁

自旋锁:相当于一个while循环内不断获取锁,当一个线程释放锁立即获取到锁,但当当前线程数多时,自旋意义不大,反而消耗cpu
挂起等待锁:当一个线程获取到锁时,就挂起等待,不参与竞争,直到所有的西线程都释放锁再去获取到锁

4.普通互斥锁和读写锁

普通互斥锁:加锁和解锁操作
读写锁
当两个线程都涉及的是读操作时:加读锁
当两个线程涉及的是读操作和写操作时:加读锁和写锁
当两个线程都涉及的是写操作时:加写锁
在读读操作时不冲突;读写操作冲突;写写操作冲突;

为什么引入读写锁?
引入读写锁的目的是通过允许多个线程同时进行读操作,提高并发性和性能。同时,读写锁也会保证在写操作执行时,其他的读线程会被阻塞,保证写操作的数据一致性。
5.公平锁和非公平锁

这里的公平的意思是先来后到的规则,先来的加锁,后来的后加锁

6.可重入锁和非可重入锁

这里的重入意思就是连续加锁

                              今天的分享到这里就结束了,感谢大家支持

在这里插入图片描述

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zoro-1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值