美文网首页
13. 显式锁:Lock接口

13. 显式锁:Lock接口

作者: TheMrBigHead | 来源:发表于2018-12-11 11:15 被阅读0次

显式锁是自JDK1.5开始引入的排它锁

显式锁的使用

方法 注释
void lock() 获取锁
void lockInterruptibly() throws InterruptedException 获取锁,如果处于阻塞状态,可以中断
boolean tryLock() 尝试获取锁,如果能获取到锁,则返回true
boolean tryLock(long time, TimeUnit unit) throws InterruptedException 尝试获取锁,有超时时间,可以被中断
void unlock() 释放锁
Condition newCondition() 返回绑定到此Lock实例的新Condition实例
// 创建锁实例
public final Lock lock = ...;

// 申请锁
lock.lock();

try {

} catch(...) {

} finally { // 避免锁泄漏
  // 释放锁
  lock.unlock();
}
image.png

ReentrantLock(可重入锁)

ReentrantLock既支持公平锁,又支持非公平锁。

// 默认构造方法是非公平锁
public ReentrantLock() {
  sync = new NonfairSync();
}

// fair参数设置为true,则为公平锁,否自为非公平锁
public ReentrantLock(boolean fair) {
  sync = fair ? new FairSync() : new NonfairSync();
}
image.png

公平锁的开销比非公平锁的开销要大

相关文章

  • 13. 显式锁:Lock接口

    显式锁是自JDK1.5开始引入的排它锁。 显式锁的使用 ReentrantLock(可重入锁) Reentrant...

  • 显式锁和AQS

    显式锁 Lock接口和核心方法 Lock接口和synchronized的比较 synchronized代码简洁,L...

  • 【java并发编程实战读书总结6】显式锁

    Java5.0以后除了内置锁synchronized外在concurrent包还提供了显式锁接口Lock。 何为显...

  • 7. 并发终结之Lock接口

    Lock是显式锁的接口,默认实现是ReentrantLock。 方法摘要 Lock.unlock方法要放在fina...

  • Java多线程编程知识点系统梳理(3)

    一、锁的概述 (1)内部锁:synchronized关键字,通过指定对象作为监视对象(2)显式锁:Lock接口,R...

  • 5. Java中的锁

    Lock接口 需要显式的获取和释放锁,支持非阻塞的获取锁,支持中断的获取锁,支持超时获取锁; Synchronze...

  • Java显式锁

    Java显式锁是为了解决Java内置锁的功能问题、性能问题而生的。JDK 5版本引入了Lock接口,Lock是Ja...

  • Android面试知识点(三)*

    1、java里的锁总结(synchronized隐式锁、Lock显式锁、volatile、CAS)[https:/...

  • Java中的锁

    Lock接口 锁用来控制多个线程访问共享资源的方式。synchronized是隐式地获取锁和释放锁,而Lock接口...

  • 并发 - Java中的锁

    一、概述 锁的使用与实现 Lock接口(显式地获取锁和释放锁) 拥有了锁获取与释放的可操作性、可中断的获取锁以及超...

网友评论

      本文标题:13. 显式锁:Lock接口

      本文链接:https://www.haomeiwen.com/subject/wbfdhqtx.html