java的lock接口中包含哪些方法?都有什么作用

java中的lock接口总包含哪些方法?

lock接口使用的时候要显式的获取锁和释放锁,获取锁和释放锁的操作可以中断获取或者是超时获取锁,reentrantlock是lock接口的实现类

void lock()

加锁

void unlock()

释放锁

boolean tryLock()

尝试获取锁,如果获取锁成功返回true,如果锁已经被其他线程获取则获取失败,返回false,使用这个方法的时候,在拿不到锁的时候不会一直等待,能够立即返回,尝试非阻塞的获取锁

boolean tryLock(long time,TimeUnit unit)throws InterruptedException,

尝试获取锁,如果获取锁成功返回true,如果锁已经被其他线程获取在拿不到锁的时候不会立即返回而是会等待一段时间,如果在等待的时间内还是拿不到锁,则返回false,如果在等待时间内拿到了锁则返回true

void lockInterruptibly() throw InterruptedException

通过这个方法获取锁,如果线程没有立即获取到锁正在等待获取锁,则这个线程能够响应中断,可以中断线程的等待状态。比如,两个线程都调用了lockinterruptibly()方法的时候,如果A线程获取到了锁,B线程就处在等待状态,在线程A的执行过程中调用了ThreadB.interrupt()方法,则线程B的等待状态将会被中断。对于synchronized修饰的方法或者是同步代码块来说,如果线程处于等待状态,则这个线程无法被中断,只能一直等待下去。需要注意的是,lockinterruptibly()方法的声明中抛出了异常,因此lockinterruptibly()方法必须要放在try代码块中或者在调用这个方法的方法中声明抛出异常interruptedException

Condition newCondition()

总结:

lock接口的加锁和解锁是显式的,lock接口中的trylock()能够尝试非阻塞的获取锁,如果锁已经被其他线程拥有就获取不到返回false,lock接口的trylock(time)能够超时获取锁,在指定的一段时间内获取锁,如果在等待时间内获取锁成功将返回true,获取锁失败将返回false,lock接口中的lockinterruptibly()能够中断获取锁,当线程没有获取到锁处于等待状态的时候,能够响应中断,如果线程已经获取到了锁是不会被interrupt()方法中断的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值