新的锁定界面优于Java中的同步块的优点是什么?你需要实现一个高性能的缓存,它允许多个读者,但单个作家保持完整性,你将如何实现它?新的锁定界面优于Java中的同步块的优点是什么?
回答
锁的优点是
- 有可能使他们公平
- 有可能让一个线程响应中断而锁定对象上等待。
- 有可能试图获取锁,但立即返回或超时后,如果锁不能获得
- 有可能获得在不同的范围释放锁,并在不同的顺序
请注意,这在javadoc of Lock及其子类中有解释。
高性能缓存可以使用ConcurrentMap来实现。
第二点似乎措辞不妙。您可以中断在正常的内部Java监视器上等待的线程。 'Lock'具有'lockInterruptibly',它可以在阻塞获取锁的同时中断线程。 –
@Tom:你当然可以中断阻塞的内存等待内部监视器,但是线程不会响应中断。这就是我的意思:中断方法将被调用,但是线程在获取锁之前不会自行中断,并且可以永远保持这种状态。我已经改变了措辞,使其更加明确。 –
关键是目标线程在'Thread.State.BLOCKED'而不是'Thread.State.WAITING'(或'TIMED_WAITING')。 –
您需要知道何时使用锁定以及何时使用同步块/方法。
如果您正在创建简单应用程序,请使用同步块。它避免了竞赛条件。但是,在避免竞争条件的情况下,您可能会造成死锁。
如果您正在创建严重的应用程序,请使用锁定。它也避免了竞争条件,但你也有避免死锁的好处。
这实际上并不是在同步锁和显式锁之间进行选择的关键。一个严重的应用程序可能很简单,使用锁定显然也会导致死锁,如同步一样。 –
- 1. OkHttpClient的execute()方法中的同步块的优点是什么
- 2. 锁定同步的优点API
- 3. 使用依赖注入优于新的优点是什么?
- 4. RECFM = FB优于RECFM = F的优点/缺点是什么?
- 5. 不同字节的优点是什么?
- 6. C++中新功能“synchronized”块的优点是什么?
- 7. pathmunge优于grep的优势是什么?
- 8. Kafka优于RabbitMQ的优势是什么?
- 9. mysqli_stmt_bind_result的优点是什么?
- 10. generator.throw()的优点是什么?
- 11. AspectJ的优点是什么?
- 12. RTSP的优点是什么?
- 13. 锁定等待/通知的优点是什么?
- 14. 使用同步线程的优点是什么?
- 15. 定义外键的优点是什么
- 16. NSSortDescriptor优于快速高阶函数的优点是什么?
- 17. 接口优于抽象类的优点是什么?
- 18. “a,b,c”.split(“,”)优于[“a”,“b”,“c”]的优点是什么?
- 19. pwrite和pread优于fwrite和fread的优点是什么?
- 20. 字节码优于本地代码的优点是什么?
- 21. 使用特征优于抽象类的优点是什么?
- 22. 结果集TYPE_FORWARD_ONLY优于TYPE_SCROLL_INSENSITIVE的优点是什么?
- 23. 使用FutureTask优于Callable的优点是什么?
- 24. 列表理解优于for循环的优点是什么?
- 25. T-tree优于B +/-树的优点是什么?
- 26. WCF中WSDualHttpBinding的优点是什么?
- 27. 装载机优于Android中的Asynctask的优势是什么?
- 28. Java的“同步”和C#的“锁定”有什么不同吗?
- 29. java中的匿名类的用例和优点是什么?
- 30. Java中的阻塞队列的优点是什么?
'Lock'并不是什么新东西,它自从Java5以来一直存在,即从2004年开始 – skaffman