多线程编程核心技术读书笔记(四):Lock的使用
来源:互联网 发布:2017中美人工智能创投 编辑:程序博客网 时间:2024/06/06 04:08
ReentrantLock类和ReentrantReadWriteLock类的使用;
ReentrantLock类可以实现与synchronized关键字相同的功能,并有更强的拓展性,具有嗅探锁定、多路分支通知等功能,使用也更加灵活;
Lock lock = new ReentrantLock();
lock.lock()方法获得对象锁,lock.unlock()方法释放对象锁。
lock.lock()方法所取得的锁是对象锁,当一个线程取得锁以后,其余线程则无法访问同样的锁所标记的代码。
synchronized关键字和wait()和notify(),notifyAll()方法的结合可以实现等待/通知模式,ReentrantLock也可以实现同样的功能,需要借助Condition对象。
notify()/notifyAll()方法进行通知时被通知的线程是由JVM随机选择的。但是使用ReentrantLock结合Condition类是可以实现选择性通知的。
synchronized就相当于整个Lock对象中只有一个单一的Condition对象,所有的线程都注册在它一个对象的身上。一个lock中可注册多个Condition对象,以实现选择性唤醒;
Object类中的wait()/wait(long timeout)方法———Condition类中await()/await(long time,TimeUnit unit);
Object类中的notify()/notifyAll()方法———Condition类中signal()/signalAll();
ReentrantLock线程安全,但是效率低,因为相当于synchronized;
ReentrantReadWriteLock类:实现读写锁,读操作相关:共享锁;写操作相关:排他锁;
- 多线程编程核心技术读书笔记(四):Lock的使用
- 《Java多线程编程核心技术》(四)Lock的使用
- 《java多线程编程核心技术》读书笔记4:Lock的使用
- Java多线程核心技术(四):Lock的使用
- Java多线程编程核心技术--Lock的使用(一)
- Java多线程编程核心技术(第四章Lock的使用)
- 《java多线程编程核心技术》核心笔记(三) Lock的使用
- java多线程编程核心技术4-Lock的使用
- 【java多线程编程核心技术】4.Lock的使用-笔记总结
- 《java 多线程编程核心技术》读书笔记四
- 多线程编程学习四(Lock 的使用)
- (转载)多线程编程学习四(Lock 的使用)
- java 多线程核心技术 第四章 lock的使用
- 多线程编程核心技术读书笔记(一):Java多线程技能
- 《java多线程编程核心技术》之Lock
- 《java多线程编程核心技术》读书笔记5:定时器Timer类的使用
- 《java多线程编程核心技术》读书笔记3:线程间的通信
- 《Java多线程编程核心技术》(五)定时器Timer的使用
- 【脑洞系列】C语言基础之刷屏系统的简单实现
- 欢迎使用CSDN-markdown编辑器
- acm 数塔
- 一个易错的面试题来加深对C++多态的理解
- codeforces 849B. Tell Your World
- 多线程编程核心技术读书笔记(四):Lock的使用
- Machine Learning Foundations
- 完整的RMAN备份示例
- 面试题27. 二叉搜索树与双向链表
- CodeForces
- 增强学习(Reinforcement Learning)
- freemarker中渲染是字符串的替换
- linux文件api
- 自定义条柱图(二)