我正在经历"Java Concurrency CookBook“。在作者提到的使用锁接口提供了比使用synchronized keyword.Can更多的性能,谁能告诉我是如何实现的吗?使用诸如堆栈帧或方法调用次数之类的术语。请不要介意,请帮我摆脱java并发的概念。
发布于 2013-09-17 16:03:49
具体的Lock实现是否真的比synchronized更快还是个未知数,而且依赖于实现。在Javadoc中肯定没有这样的声明。Doug Leas的book1并没有做出任何声明,我认为它很快就会比“通常更好的性能”更强大。
1: Lea,在Java中的并发编程,第二版,Addison Wesley 2000。
发布于 2019-10-29 00:49:49
1与没有死锁问题的锁不同,同步是导致死锁问题的唯一罪魁祸首。
2在同步中,我们不知道一个线程在前一个线程释放锁后有多长时间会获得机会。这可能会导致饥饿的问题,而在锁的情况下,我们有它的实现类可重入锁,它有一个构造器,它允许你传递公平性属性作为它的参数之一,让等待时间最长的线程有机会获得锁。
3在同步中,如果一个线程正在等待另一个线程,那么等待的线程不会做任何其他不需要锁访问的活动,但是通过lock接口,有一个trylock()方法,你可以尝试使用它来访问锁,如果你没有获得锁,你可以执行其他替代任务。这有助于提高应用程序的性能。
4没有应用程序接口可以检查有多少线程在等待特定的锁,而使用锁接口实现类ReentrantLock方法可以做到这一点。
5使用带有holdCount()方法的lock接口可以更好地控制锁,这在同步中是找不到的。
https://stackoverflow.com/questions/18842206
复制相似问题