![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
锁
文章平均质量分 92
喜欢敲代码的Apollo
应届毕业生,蚂蚁金服JAVA后端工程师,欢迎小伙伴们一起交流!
展开
-
synchronized锁升级及锁优化
一、锁升级 在1.6之前java中不存在只存在重量级锁,这种锁直接对接底层操作系统中的互斥量(mutex),这种同步成本非常高,包括操作系统调用引起的内核态与用户态之间的切换。线程阻塞造成的线程切换等。因此在jdk 1.6中将锁分为四种状态:由低到高分别为:无锁状态、偏向锁状态、轻量级锁状态、重量级锁状态。 1. 偏向锁。 什么是偏向锁呢?为什么要引入偏向锁呢? 偏向锁是如果一个线程获取到了偏向锁,在没有其他线程竞争的情况下,如果下次再执行该同步块时则只需要简单判断当前偏向锁所偏向的对象是否原创 2021-02-17 23:03:08 · 1287 阅读 · 0 评论 -
互斥锁、自旋锁、读写锁、悲观锁、乐观锁的应用场景
前言 在编程世界里,「锁」更是五花八门,多种多样,每种锁的加锁开销以及应用场景也可能会不同。 如何用好锁,也是程序员的基本素养之一了。 高并发的场景下,如果选对了合适的锁,则会大大提高系统的性能,否则性能会降低。 所以,知道各种锁的开销,以及应用场景是很有必要的。 接下来,就谈一谈常见的这几种锁: 正文 多线程访问共享资源的时候,避免不了资源竞争而导致数据错乱的问题,所以我们通常为了解决这一问题,都会在访问共享资源之前加锁。 最常用的就是互斥锁,当然还有很多种不同的锁,比如自旋锁、读写锁、乐观锁等,不同原创 2021-02-10 10:04:56 · 1696 阅读 · 0 评论