java 并发多线程 锁的分类概念介绍 多线程下篇(二)
java 并发多线程 锁的分类概念介绍 多线程下篇(二)
乐观锁与悲观锁
- 乐观就像小米的宣传语-永远相信,美好的事情即将发生;
- 而悲观就像透过有色眼睛看世界,永远都带有颜色;
- 两个人去同一个水井打水,如果每次都错开,那么美好一直存在
- 如果天天赶到同一个时间点,我相信早晚必有一战.....
- 乐观的眼光就是坚信绝大多数时候是没问题的,只需要最后发生修改或者操作时进行校验,比如校验是否被修改过,然后再去进一步处理
- 悲观的眼光就是坚信肯定会有问题,所以我就一直加锁,只要一直锁住反正肯定不会出现问题
公平锁与非公平锁
- 对于锁的请求,每个线程总是有一个先来后到的先后顺序,如果按照先后顺序,那么就是公平锁
- 如果不按照先后顺序,随机的或者按照什么算法优先级等选择,那么就是非公平锁
独占锁和共享锁
- 如果一个锁仅仅只能被一个进程拥有,那么他就是独占的;
- 如果一个锁可以同时被多个线程拥有,那么他就是共享的;
可重入锁
自旋锁
适应性自旋
- 如果对于某个锁,自旋很少成功获得过,那在以后尝试获取这个锁时将可能省略掉自旋过程,直接阻塞线程,避免浪费处理器资源
- 如果对于某个锁,自旋等待刚刚成功获得过锁,那么将会认为这次也很可能是成功的,所以将会允许自旋,甚至允许更多次数(时间)的自旋等待
小结
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
GPS位置行业应用二次开发,选好GPS定位系统源代码很重要
二次开发就是基于别人的代码基础上去开发,这样可以节省大量的时间和精力,即可快速开发出自己想要的应用系统;那么问题来了,什么样的代码更适合做二次开发呢;其实这就好比是装修房间,一般有两种情况,一种就是给你一个毛坯房,你自己去装修,可以装修成任意自己喜欢的风格;还有就是给你一个已经装修好的精装房,再精装房基础上再去装修成自己喜欢的风格! 第二种其实就是等于购买已经开发好的某个行业的应用代码,去做二次开发,这显然是最费时费力的;好比是一套公交车行业的系统应用,你买来这样一套GPS定位系统代码,然后去开发成一套人员定位管理的系统,显然几乎是没法去做二次开发的;就好比给一套精装修的房子给全部打掉,然后装修成另外一套风格一样,成本巨大费时费力,还不能破坏原有核心的东西,否则极容易造成各类不稳定,无法正常工作的状况发生! GPSBD是一套专为二次开发而设计的GPS定位系统,这套系统集成了GPS行业核心功能要点;如 实时定位,轨迹回放,电子围栏,统计报表,指令控制,报警提醒等等,并且系统还集成了市面上主流的几十种车机通信协议,开发者可快速接入各类智能硬件终端,无需对接协议;GPSBD 还支持对接定制的...
- 下一篇
企业级 SpringBoot 教程-在springboot中用redis实现消息队列
准备阶段 java 1.8 maven 3.0 idea 环境依赖 创建一个新的springboot工程,在其pom文件,加入spring-boot-starter-data-redis依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 创建一个消息接收者 REcevier类,它是一个普通的类,需要注入到springboot中。 public class Receiver { private static final Logger LOGGER = LoggerFactory.getLogger(Receiver.class); private CountDownLatch latch; @Autowired public Receiver(CountDownLatch latch) { this.latch...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果