首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与Java中的同步块相比,新的Lock接口有什么优势?

与Java中的同步块相比,新的Lock接口有什么优势?
EN

Stack Overflow用户
提问于 2011-11-06 16:07:36
回答 4查看 9.1K关注 0票数 8

与Java中的同步块相比,新的Lock接口有什么优势?你需要实现一个高性能的缓存,它允许多个读取器但单个写入器保持完整性,你将如何实现它?

EN

回答 4

Stack Overflow用户

发布于 2011-11-06 16:11:14

锁的优点是

  • 可以使它们公平
  • 可以使线程在等待锁对象时响应中断。
  • 可以尝试获取锁,但如果无法获取锁则立即返回或在超时后返回
  • 可以获取和释放不同作用域中的锁,并以不同的顺序

<代码>F29

请注意,这在javadoc of Lock及其子类中进行了解释。

可以使用ConcurrentMap来实现高性能高速缓存。

票数 13
EN

Stack Overflow用户

发布于 2019-10-28 22:40:21

下面列出了锁接口与同步相比的各种优点

  1. Synchronisation是导致死锁问题的唯一罪魁祸首,不同于没有死锁问题的lock,
  2. 在同步中,我们不知道在前一个线程释放锁后多少时间后,一个线程将获得机会。这可能会导致饥饿的问题,而在lock的情况下,我们有它的实现类reentrant lock,它有一个构造函数,让你传递公平性属性作为它的参数之一,让等待时间最长的线程有机会获得锁。
  3. 在同步中,如果一个线程正在等待另一个线程,那么等待的线程不会做任何其他不需要锁访问的活动,但是使用lock接口,有一个trylock()方法,你可以尝试访问锁,如果你没有得到锁,你可以执行其他替代任务。这有助于提高应用程序的性能。
  4. 没有应用程序接口来检查有多少线程在等待特定的锁,而使用锁接口实现类ReentrantLock方法可以做到这一点。使用带有synchronization.

所没有的holdCount()方法的锁接口,

  • One可以更好地控制锁
票数 2
EN

Stack Overflow用户

发布于 2019-11-23 19:13:34

多线程和并发编程中的锁接口的主要优点是,它们为读写提供了两个单独的锁,使您能够编写高性能的数据结构,如ConcurrentHashMap和条件阻塞。

一个线程只能获取一次锁。同步块不提供任何等待队列的机制,在一个线程退出后,任何线程都可以获得锁。这可能会导致其他线程在很长一段时间内资源匮乏。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8025878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档