Java锁对比
2022年6月21日大约 1 分钟
锁 | 优点 | 缺点 | 试用场景 |
---|---|---|---|
重入锁 | 提供了更多的功能和灵活性,例如支持可中断等待、超时等待、条件等, 允许一个线程多次获取锁 | 需要手动释放锁,可能出现忘记释放锁的情况 | 需要更多功能和灵活性的场景,例如需要支持可中断等待、超时等待、条件等待等情况等 |
读写锁 | 将读操作和写操作分离,读操作可以并发执行,提高了并发性能,写操作是独占的,保证了数据的一致性 | 写操作可能会被读操作阻塞,导致写操作的响应时间变长 | 读操作频繁,写操作相对较少的场景,可以提高并发性能 |
偏向锁 | 加锁和解锁不需要额外开销 | 如果线程间存在锁竞争,会带来额外的锁消耗 | 适用于只有一个线程访问同步块场景 |
轻量级锁 | 竞争的线程不会阻塞,提高程序响应速度 | 如果始终得不到锁竞争线程,使用自旋会消耗CPU | 追求响应时间,同步块执行速度非常快 |
重量级锁 | 线程竞争不使用自旋,不会消耗CPU | 线程阻塞,响应时间缓慢 | 追求吞吐量,同步块执行速度较长 |
原创声明
平台文章均为原创文章,未经许可,禁止转载。
如需转载,请联系作者获取授权,并注明来源及原文链接。