首页 > 其他 > 详细

一.lock的使用

时间:2017-10-28 17:00:41      阅读:176      评论:0      收藏:0      [点我收藏+]

使用ReentrantLock类

ReentrantLock类在扩展功能上更加强大,比如嗅探锁定,多路分支通知。而且在使用上也比synchronized更加灵活

技术分享

调用ReentrantLock对象的lock()方法获取锁,调用unlock()方法释放 锁。

使用Condition实现等待/通知机制:错误用法与解决

技术分享

 

  注意调用condition.await()方法之前调用lock.lock()代码获得同步监视器

这个synchronized一样,调用wait()和notify()方法必须放入在同步锁内一个道理

 

正确使用Condition实现等待/通知

技术分享

技术分享

技术分享

技术分享

 

技术分享

 

使用多个conditon实现通知部分线程:错误用法

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

 

使用多个condition实现通知部分线程:正确用法

技术分享

技术分享

技术分享

技术分享

技术分享

使用ReentrantLock对象可以唤醒指定种类的线程,这是控制部分线程行为方式的便捷方式。

 

公平锁与非公平锁

技术分享

技术分享

技术分享

技术分享

技术分享

非公平锁

技术分享

技术分享

技术分享

方法getHoldCount()getQueueLength()和getWaitQueueLength()的测试

方法 int getHoldCount()的作用是查询当前线程保持锁定的个数,也就是调用lock()方法的次数

方法int getQueueLength()的作用是返回正等待获取此锁的线程估计数

方法int getWaitQueueLength(Condition condition)的作用是返回等待与此锁相关的给定条件Condition线程估计数

方法awaitUntil()的使用

等待一定的时间后自动唤醒

 

一.lock的使用

原文:http://www.cnblogs.com/duan2/p/7747287.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!