lock线程锁

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/DT_Zhangshuo/article/details/82925831

Lock 实现提供了比使用 synchronized 方法和语句可获得的更广泛的锁定操作。Lock锁可以显示的获取锁对象和释放锁,而Synchorized则是隐式的。不使用块结构锁就失去了使用 synchronized 方法和语句时会出现的锁自动释放功能。Lock 接口的实现允许锁在不同的作用范围内获取和释放,并允许以任何顺序获取和释放多个锁。

Lock的特性:

非阻塞地获取锁
如果这一时刻锁没有被其他线程获取到,则当前所可以获取并持有锁。
被中断的获取锁
获取锁的线程响应中断,中断异常将会被抛出,同时锁会被释放。
超市获取锁
在指定时间内获取锁,超时则返回。

主要方法

void lock()
当前线程获取锁然后返回。
void lockInterruptibly()
可中断的获取锁,可以中断线程。
boolean tryLock()
常识非阻塞的获取锁
boolean tryLock(long time,TimeUnit unit)
超时获取锁
void unlock()
释放锁
Condition new Condition()
获取等待通知组建,当前线程只有获得了锁才能调用该组件的wait方法,调用后释放锁。

猜你喜欢

转载自blog.csdn.net/DT_Zhangshuo/article/details/82925831