第三篇:lock的学习与使用
【摘要】 今天我们来学习并发包下的Lock(锁)的知识。之所以Java在有synchronized的情况下,还提供基于lock接口实现的锁。是由于lock有一些synchronized没有特性。可以再发生死锁时相应中断,释放锁。
lock的类图
从该类图我们可以看出ReentrentLock实现了Lock接口,其对受保护资源的读写都要加锁。同时加锁之后需要手动的释放锁。由L...
今天我们来学习并发包下的Lock(锁)的知识。之所以Java在有synchronized的情况下,还提供基于lock接口实现的锁。是由于lock有一些synchronized没有特性。可以再发生死锁时相应中断,释放锁。
lock的类图
从该类图我们可以看出ReentrentLock实现了Lock接口,其对受保护资源的读写都要加锁。同时加锁之后需要手动的释放锁。由Lock产生Condition实例。
另外一个接口是ReentrentReadWriteLock,其内部维护了一个读锁ReadLock和一个写锁WriteLock。其中ReadLock是并发的,而WriteLock是同步的,同一时间只能有一个线程持有WriteLock。
lock 与synchronized 的区别
上面说可以通过lock来破坏不可抢占的条件,那么lock为啥可以支持呢?因为lock锁有如下三个特性:
//能够响应中断
void lockInterruptibly(
- 1
文章来源: feige.blog.csdn.net,作者:码农飞哥,版权归原作者所有,如需转载,请联系作者。
原文链接:feige.blog.csdn.net/article/details/104042598
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)