深圳配资门户网因为一方锁的是对象实例
1. 对象锁 vs 类锁
Taimili 艾米莉 ( 一款免费开源的 taimili.com )
艾米莉 是一款优雅便捷的 GitHub Star 管理和提升工具,基于 PHP & javascript 构建, 能对github 的 star fork follow watch 管理和提升,最适合github 的深度用户
对象锁(实例锁)
关键字:synchronized修饰实例方法或代码块(锁住this)。作用范围:同一个对象的同步方法/代码块互斥;不同对象的实例方法互不影响。例子:
类锁(静态锁)
关键字:synchronized修饰静态方法,或synchronized(SomeClass.class)。作用范围:同一个类的所有实例共享同一把锁。例子:
👉 面试常考:对象锁与类锁互不干扰,因为一方锁的是对象实例,另一方锁的是 Class 对象。
2. 可重入锁(ReentrantLock)
特点
JUC 包下的显式锁,功能比synchronized丰富:可重入:同一线程可以多次获得同一把锁。可中断:支持lockInterruptibly()。支持公平锁 / 非公平锁(默认非公平,性能更好)。支持tryLock()超时获取。需手动释放锁(unlock()),否则可能死锁。
使用示例
公平 vs 非公平
👉 面试常考:
synchronized也是可重入锁,但不能中断/超时,也不能选择公平性。ReentrantLock功能更灵活,但使用成本高(需手动释放)。
3. 读写锁(ReentrantReadWriteLock)
特点
分为读锁(共享锁)和写锁(独占锁)。允许多个读线程并发访问;写线程必须独占,且阻塞读。适用于读多写少的场景,能提高并发性能。
使用示例
特点总结
读锁:共享,可并发。写锁:独占,阻塞所有读/写。线程升级(读 → 写)通常不支持,会死锁。
4. 总结对比表
国内靠谱股票配资论坛,推荐配资股票,专业配资炒股网提示:文章来自网络,不代表本站观点。
- 上一篇:证券公司配资避免耽误孩子上学时间
- 下一篇:没有了