java – 显式锁与隐式锁
发布时间:2020-12-14 05:59:56 所属栏目:Java 来源:网络整理
导读:使用Locks( java.util.concurrent.locks.Lock)而不是关键字synchronized方法wait()和方法notify()完全一样吗? 我可以使用锁(显式锁)而不是隐式锁(同步)来线程安全地编程吗? 据我所知,我一直在使用隐式锁.我知道Lock接口实现给出的优点,比如方法:isLocked(
使用Locks(
java.util.concurrent.locks.Lock)而不是关键字synchronized方法wait()和方法notify()完全一样吗?
我可以使用锁(显式锁)而不是隐式锁(同步)来线程安全地编程吗? 据我所知,我一直在使用隐式锁.我知道Lock接口实现给出的优点,比如方法:isLocked(),getLockQueueLength(),getHoldCount()等…但是仍旧旧学校方式(wait()和notify())会有其他限制除了没有那些方法? 我也知道用(布尔公平)参数构造一个锁的可能性,它允许缺乏饥饿. 解决方法
是的,绝对可以使用java.util.concurrent.locks.Lock编写线程安全的程序.如果你看到java.util.concurrent.locks.Lock的任何实现,像ReentrantLock内部实现使用旧的synchronized块.
锁实现提供了比使用同步方法和语句获得的更广泛的锁操作.它们允许更灵活的结构,可能具有完全不同的属性,并且可以支持多个关联的Condition对象. 除了我的差异,synchronized关键字自然内置了语言支持.这可能意味着JIT可以以Locks无法实现的方式优化同步块.例如它可以组合synchronized blocks.synchronized最适合访问锁的少量线程,Lock可能最适合访问相同锁的大量线程.同步块也不保证等待进入它的线程被授予访问权限的顺序. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |