前言
前段时间,我向一位在阿里的朋友寻求进大厂的秘诀,他分享给我一份阿里内部资料——JAVA核心进阶手册,仔细翻阅一番才知道里面收纳整理的知识可真是齐全,不得不来感叹一番…
我将JAVA核心进阶手册大致分为以下5篇内容
- 基础:多线程+网络+数据结构与算法+MySQL+Tomcat
- 框架:设计模式+Spring+SpringMVC+MyBatis
- 分布式架构:限流(ZK/Nginx)+缓存(Redis/MongoDB/Memcached)+通讯(MQ/kafka)
- 微服务架构:RPC+SpringBoot+SpringCloud+Dubbo+K8s
- 调优:JVM+MySQL+Tomcat
1 什么是自旋锁和互斥锁?
由于CLH锁是一种自旋锁,那么我们先来看看自旋锁是什么?
自旋锁说白了也是一种互斥锁,只不过没有抢到锁的线程会一直自旋等待锁的释放,处于busy-waiting的状态,此时等待锁的线程不会进入休眠状态,而是一直忙等待浪费CPU周期。因此自旋锁适用于锁占用时间短的场合。
这里谈到了自旋锁,那么我们也顺便说下互斥锁。这里的互斥锁