前言

今天这篇文章中简单介绍一下一个 Java 程序员必知的 Linux 的一些概念以及常见命令。

如果文章有任何需要改善和完善的地方,欢迎在评论区指出,共同进步!笔芯!

正式开始 Linux 之前,简单花一点点篇幅科普一下操作系统相关的内容。

1 什么是自旋锁和互斥锁?

由于CLH锁是一种自旋锁,那么我们先来看看自旋锁是什么?

自旋锁说白了也是一种互斥锁,只不过没有抢到锁的线程会一直自旋等待锁的释放,处于busy-waiting的状态,此时等待锁的线程不会进入休眠状态,而是一直忙等待浪费CPU周期。因此自旋锁适用于锁占用时间短的场合。

这里谈到了自旋锁,那么我们也顺便说下互斥锁。这里的互斥锁说的是传统意义的互斥锁,就是多个线程并发竞争锁的时候,没有抢到锁的线程会进入休眠状态即sleep-waiting,当锁被释放的时候,处于休眠状态的一个线程会再次获取到锁。缺点就是这一些列过程需要线程切换,需要执行很多CPU指令,同样需要时间。如果CPU执行线程切换的时间比锁占用的时间还长,那么可能还不如使用自旋锁。因此互斥锁适用于锁占用时间长的场合。

2 什么是CLH锁?

CLH锁其实就是一种是基于逻辑队列非线程饥饿的一种自旋公平锁,由于是 Craig、Landin 和 Hagersten三位大佬的发明,因此命名为CLH锁。

CLH锁原理如下:

  1. 首先有一个尾节点指针,通过这个尾结点指针来构建等待线程的逻辑队列,因此能确保线程线程先到先服务的公平性,因此尾指针可以说是构建逻辑队列的桥梁;此外这个尾节点指针是原子引用类型,避免了多线程并发操作的线程安全性问题;
  2. 通过等待锁的每个线程在自己的某个变量上自旋等待,这个变量将由前一个线程写入。由于某个线程获取锁操作时总是通过尾节点指针获取到前一线程写入的变量,而尾节点指针又是原子引用类型,因此确保了这个变量获取出来总是线程安全的。

这么说肯定很抽象,有些小伙伴可能不理解,没关系,我们心中可以有个概念即可,后面我们会一步一图来彻彻底底把CLH锁弄明白。

3 为什么要学习CLH锁?

好了,前面我们对CLH锁有了一个概念后,那么我们为什么要学习CLH锁呢?

研究过AQS源码的小伙伴们应该知道,AQS是JUC的核心,而CLH锁又是AQS的基础,说核心也不为过,因为AQS就是用了变种的CLH锁。如果要学好Java并发编程,那么必定要学好JUC;学好JUC,必定要先学好AQS;学好AQS,那么必定先学好CLH。因此,这就是我们为什么要学习CLH锁的原因。

最后

我还通过一些渠道整理了一些大厂真实面试主要有:蚂蚁金服、拼多多、阿里云、百度、唯品会、携程、丰巢科技、乐信、软通动力、OPPO、银盛支付、中国平安等初,中级,高级Java面试题集合,附带超详细答案,希望能帮助到大家。

资料领取方式:戳这里免费下载

还有专门针对JVM、SPringBoot、SpringCloud、数据库、Linux、缓存、消息中间件、源码等相关面试题。

题。**

[外链图片转存中…(img-GPcCvjEb-1624612903473)]

和腾讯大佬的技术面谈,爱了爱了相关推荐

  1. 和快手大佬的技术面谈,面试真题解析

    前言 上个月4号通过阿里工作的学长进行内推,7天简历评估,11号接到电话面试,尽管猝不及防回答仓促,但好在前期准备充分,通过.3天后进行现场面试,通知时间为早上10点.当日设了七点闹钟,结果五点五十三 ...

  2. 一锁知千秋,再和腾讯大佬的技术对话,我还是小看锁了!面试加分的答案都已安排

    对酒当歌,人生几何! 朝朝暮暮,唯有己脱. 苦苦寻觅找工作之间,殊不知今日之时乃我心之痛,难到是我不配拥有工作嘛.自面试后他所谓的等待都过去一段时日,可惜在下京东上的小金库都要见低啦.每每想到不由心中 ...

  3. 和字节跳动大佬的技术面谈,醍醐灌顶!

    开头 学习如逆水行舟,尤其是IT行业有着日新月异的节奏. 而且现在这个浮躁而又拜金的社会,我相信很多人做技术并非出于热爱,只是被互联网的高薪吸引,毕竟技术岗位非常枯燥,不仅要面对奇奇怪怪的需求,还要不 ...

  4. 看了这篇文章我才真正理解了!和快手大佬的技术面谈,附架构师必备技术详解

    前言 Alibaba作为国内互联网行业的"老大",一直以来也是很多"数码宝贝"梦寐以求的公司,我个人是做Java开发的,阿里这些年也开发了很多屌炸天的开源项目, ...

  5. Java开发技巧!和阿里大佬的技术面谈

    前言 本系列的目的是明明白白.彻彻底底的搞定日期/时间处理的几乎所有case.上篇文章铺设所有涉及到的概念解释,例如GMT.UTC.夏令时.时间戳等等,若你还没看过,不仅强烈建议而是强制建议你前往用花 ...

  6. 研发4面真题解析(Java岗):和阿里大佬的技术面谈,隔壁都馋哭了

    说在前面 已经到了月中旬了,程序员们即将迎来面试季,今天刚好有一位粉丝找到我,他上周刚面完奇虎360,经过了几轮的面试,最后薪资也谈了,今天主要是问我想这样的大型互联网公司一般多久会正式下offer. ...

  7. 和网易大佬的技术面谈,大厂直通车!

    前言 MyBatis是目前非常流行的ORM框架,它的功能很强大,然而其实现却比较简单.优雅.本文主要讲述MyBatis的架构设计思路,并且讨论MyBatis的几个核心部件,然后结合一个select查询 ...

  8. 厉害了!和网易大佬的技术面谈,大厂直通车!

    前言 MyBatis是目前非常流行的ORM框架,它的功能很强大,然而其实现却比较简单.优雅.本文主要讲述MyBatis的架构设计思路,并且讨论MyBatis的几个核心部件,然后结合一个select查询 ...

  9. 腾讯QQ空间技术总监,T13专家被裁,原因令人唏嘘

    大家好,我是校长. 最近这几天,腾讯前端开发领袖.原腾讯 QQ 空间技术总监.T13 专家黄希彤被其夫人曝离职,据爆料好像是被裁. 据腾讯云官网介绍,黄希彤为前端开发领袖,前腾讯云布道师,腾讯首个 W ...

  10. 美通企业日报 | 爱彼迎招募5名南极科考志愿者;中金拟与腾讯成立合资技术公司...

    要闻 普华永道预测,到2025年,许多国家的肥胖率将超过68% 德国百年科研护肤--优色林分享全球创新研究成果 特劳特举办定位理论50周年全球盛典 爱彼迎全球招募5名南极科学考察团志愿者 中金宣布拟与 ...

最新文章

  1. windows增量到linux,Beyond Compare 3在windows和linux下实现提取增量包
  2. 火热招募中 | PMCAFF产品经理社区志愿者计划火热开启
  3. 不要再new一个对象了!程序员脱离单身秘籍
  4. java json lib 日期
  5. php 复制文件夹并压缩到最小_php将文件夹打包成zip文件
  6. geth 转账_eth客户端安装 geth使用 批量转账(一)
  7. 扩展二叉树(信息学奥赛一本通-T1340)
  8. java去哪导包_在Java语言中,哪一个包中的类是自动导入的?( )java.applet
  9. 程序猿应该拥有的浏览器
  10. 从终端直接下载cuDNN
  11. 前端读取服务器文件,js读取服务器端的txt文件
  12. 永辉站上“十字路口”:上市11年首亏,巨头转身还差点什么?
  13. x1 php168,新手快速入门教程
  14. linux软件源历史版本,解决deepin 15.9.2以后版本软件太旧的问题,混合lion与panda源使用...
  15. nz-select 选择器
  16. 英语字母c的语言教案,[小班英语教案认识字母]幼儿园小班英语教案:字母C.doc...
  17. 故障:安装OFFICE2007时,刚开始安装,就提示“windows installer 服务不能更新一个或多个受保护的windows文件”,然后安装回滚,最后退出安装。
  18. python自动发送微信文件_python自动发微信监控报警
  19. Java毕设:基于SSM的高校运动会管理系统(spring+spring mvc+mybatis+mysql)1008
  20. C语言 用字符串打印ASCII码值

热门文章

  1. 深入解析 TiFlash丨多并发下线程创建、释放的阻塞问题
  2. PPT中同时改变表格大小的方法
  3. 集成电路的发明半导体行业的摩尔定律(单位能耗处理信息能力的增加)
  4. 欢迎 Andrew N.Green 加入 YGG 担任开发者关系主管
  5. Jenkins集合Sonar使用(windows)
  6. 关键词分析与挖掘:你的网站SEO必备技能!
  7. 【坐在马桶上看算法】算法9:开启“树”之旅
  8. php ie通过ajax返回值中文乱码,[转]php返回json数据中文显示的问题
  9. ArcEngine中sxd文档的保存方法
  10. 数通笔记IP.4-BGP