前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java并发-14.Lock工具

Java并发-14.Lock工具

作者头像
悠扬前奏
发布2019-05-28 13:20:54
3120
发布2019-05-28 13:20:54
举报
  • Lock接口(和相关实现类)可以来用来实现锁功能。
  • 缺少了隐式释放和获取锁的便捷性,但是多了获取和释放锁的可操作可中断的获取锁,以及超时获取锁等特性。

Lock使用的简单方式:

代码语言:javascript
复制
Lock lock = new ReentrantLock();
lock.lock();
try{}
finally{
  lock.unlock();
}

Lock特性:

特性

描述

尝试非阻塞的获取锁

当前线程尝试获取锁,如果这一时刻锁没有被其他线程获取到,获取成功

能被中断的获取锁

获取到锁的线程能响应中断,当获取到锁的线程中断异常会被抛出,同时锁被释放

超时获取锁

在指定的截止时间之前获取锁,如果截止时间到了还没有获取到锁,则返回

Lock的API:

方法

描述

void lock()

当前线程获取锁,获取到锁后,从方法返回

void lockInterruptibly() throws InterrupedException

可中断的获取锁,即在锁的获取中可以中断当前线程

bookean tryLock()

尝试非阻塞的获取锁,调用后立即返回,能获取返回true,否则返回false

boolean tryLock(long time, TimeUnit unit) throws InterruptedException

超时的获取锁,在三种情况下返回1. 当前线程在超时时间内获取到了锁。2. 当前线程在超时时间内被中断3. 超时时间结束,返回false

unlock()

释放锁

Condition newCondition()

获取等待通知组件,只有当前线程获取到了锁,才能调用该组件的wait()方法,调用后,当前线程释放锁

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.05.11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档