思想:如果请求的资源空闲,直接使用并加锁。如果请求的资源已经被锁定,就将线程放入到一个CLH队列中等待唤醒。AQS使用CLH队列锁实现,即将暂时获取不到锁的线程放入到队列中。
CLH是基于单向链表的高性能、公平的自旋锁,申请加锁的线程需要在本地变量上自旋,来减少了CPU缓存和主内存的同步次数,从而降低了总线和内存的开销。
如果内容有错误或者您有不同的见解,请关注我。想要思维导图的小伙伴们记得留言哦。
详细内容以及脑图链接地址: https://zhuanlan.zhihu.com/p/341674514