当前位置: 首页 > 装修知识 > 正文
Java 各种锁的小结
2022-10-16 09:40:44一.
在 JDK 1.6 之前, 是重量级锁,效率低下。
从 JDK 1.6 开始,做了很多优化锁的种类,如偏向锁、轻量级锁、自旋锁、适应性自旋锁、锁消除、锁粗化等技术来减少锁操作的开销。
同步锁一共包含四种状态:无锁、偏向锁、轻量级锁、重量级锁,它会随着竞争情况逐渐升级。 同步锁可以升级但是不可以降级,目的是为了提高获取锁和释放锁的效率。
的底层原理 修饰的代码块
通过反编译.class文件,通过查看字节码可以得到:在代码块中使用的是和指令,其中指令指向同步代码块的开始位置,指令指明同步代码块的结束位置。
修饰的方法
同样查看字节码可以得到:在同步方法中会包含标记符。该标记符指明了该方法是一个同步方法,从而执行相应的同步调用。
二. 对象锁、类锁、私有锁
对象锁:使用 修饰非静态的方法以及 (this) 同步代码块使用的锁是对象锁。
类锁:使用 修饰静态的方法以及 (class) 同步代码块使用的锁是类锁。
私有锁:在类内部声明一个私有属性如 lock,在需要加锁的同步块使用 (lock)
它们的特性:
由私有锁实现的等待/通知机制:
Object lock = new Object();
// 由等待方线程实现
synchronized (lock) {
while (条件不满足) {
lock.wait();
}
}
// 由通知方线程实现
synchronized (lock) {
条件发生改变
lock.notify();
}
三.
是一个独占/排他锁。相对于 ,它更加灵活。但是需要自己写出加锁和解锁的过程。它的灵活性在于它拥有很多特性。
需要显示地进行释放锁。特别是在程序异常时, 会自动释放锁,而 并不会自动释放锁,所以必须在 中进行释放锁。
它的特性:
是很多类的基础,例如 内部使用的 就是继承 , 也使用了 。
四. ck
我之前写过一篇文章《ck读写锁及其在 中的使用》曾详细介绍过ck。
它拥有读锁()和写锁(),读锁是一个共享锁,写锁是一个排他锁。
它的特性:
五. CAS
上面提到的 、ck 都是基于 (AQS),而 AQS 又是基于 CAS。CAS 的全称是 And Swap(比较与交换),它是一种无锁算法。
、Lock 都采用了悲观锁的机制,而 CAS 是一种乐观锁的实现。
CAS 的特性:
CAS 存在的问题:
六.
用于替代传统的 的 wait()、() 实现线程间的协作。
在 对象中,与 wait、、 方法对应的分别是 await、 和 。
必须要配合 Lock 一起使用,一个 的实例必须与一个 Lock 绑定。
它的特性:
七.
、、 都是并发工具类。
可以指定多个线程同时访问某个资源,而 和 都是一次只允许一个线程访问某个资源。由于 适用于限制访问某些资源的线程数目,因此可以使用它来做限流。
并不会实现数据的同步,数据的同步还是需要使用 、Lock 等实现。
它的特性:
八.
可以看成是一个倒计数器,它允许一个或多个线程等待其他线程完成操作。因此, 是共享锁。
的 () 方法将计数器减1,await() 方法会阻塞当前线程直到计数器变为0。
在我的爬虫框架中就使用了 来控制某个爬虫的暂停和恢复。
九. 锁的分类
Java 锁的小结十. 总结
本文小结了 Java 常用的一些锁及其一些特性,掌握这些锁是掌握 Java 并发编程的基础。当然,Java 的锁并不止这些,例如 的分段锁(),分布式环境下所使用的分布式锁。
参考资料:
《Java并发编程艺术》
《Java并发编程实战》
不可不说的Java“锁”事
欢迎加入我的知识星球,一起探讨架构锁的种类,交流源码。加入方式,长按下方二维码噢:
已在知识星球更新源码解析如下:
如果你喜欢这篇文章,喜欢,转发。
生活很美好,明天见(。・ω・。)ノ♡
以上内容为蝴蝶兰风评投稿者为大家精心整理,希望对大家有所帮助!
- 上一篇:房子装修水电注意事项,水电定位注意事项
- 下一篇:家装水电如何定位?
猜你喜欢
- 2022-10-08 06:57:20锁的种类|mysql中的锁详解
- 2022-10-08 02:51:39锁的种类|公寓智能锁分类及其检测设备
- 2022-10-08 02:09:53锁的种类|智能锁材质这么多,哪种材质才最好
- 2022-10-03 03:21:48锁的种类|网传钥匙安全分类图 开锁匠称不反锁等于没锁
- 2022-10-03 00:44:32锁的种类|防盗锁种类
留言与评论(共有 条评论) |
- 搜索
-
- 10-18APF防水卷材
- 10-18液压油过滤器规格型号
- 10-18玻璃胶多久能干?使用注意事项请谨记
- 10-18防雷接地检测主要都检测什么?
- 10-18空调大插头买什么插板(空调插头应该买多大的插排)
- 10-18粘贴钢板加固怎么施工?注意事项是什么?如何选材料、粘钢胶标准是什么
- 10-18干货 | 岩板界的什么规格才能稳占家居空间的C位?
- 10-18不锈钢锅烧黑了怎么办 怎么清理 锅烧干后能直接倒水吗?
- 10-18一寸水管直径是多少0
- 10-18冰箱温度调到多少合适 细节决定保鲜