Lock接口与读写锁(lock 和 synchronized 的比较)
来源:互联网 发布:一句话经典 知乎 编辑:程序博客网 时间:2024/06/07 12:52
出现:JDK1.5
实现类:
ReentrantLock(重入锁、手工锁)
ReentrantReadWriteLock.ReadLock ReentrantReadWriteLock.WriteLock
主要方法:
lock() unlock()
使用:
TestLock.java
和synchronized互斥锁的比较:
(1)synchronized关键字修饰的代码是完全互斥的,而Lock更加灵活,可以实现多线程同时读共享数据(读锁和读锁不互斥),但读锁和写锁互斥。写锁和写锁互斥(读写锁)。
(2)ReentrainLock有tryLock方法:
(3)lockInterruptibly方法持有的锁,如果没获取到锁可被其它线程打断
(4)reentrianLock可以指定公平锁(synchronized为不公平锁)
synchronized在锁释放时,所有线程都在竞争锁(不确定谁能拿到锁),很可能有的线程一次都拿不到,不公平
reentrianLock可以在锁竞争时,判断哪个线程等待的时间长,就先让哪个线程获取锁
读写锁接口:
ReadWriteLock
实现类:
ReentranReadWriteLock
方法:
readLock、writeLock(返回Lock对象)
使用:
例子:用户从银行读取余额(读锁,多用户同时读一个账号)。用户从银行存取钱(写锁,每次只能一个用户从同一个账号存取钱)
用户账户类:MyAccount.java
线程类(多用户同时访问一个账号):UserThread.java
测试类:Test.java
锁升级和降级原则:
读锁不可升级成写锁(读锁释放前不可以加写锁)
写锁可以降级成读锁(写锁释放前可以加读锁)
官方文档读写锁例子:
阅读全文
0 0
- Lock接口与读写锁(lock 和 synchronized 的比较)
- Lock与Synchronized的比较
- lock与synchronized的比较
- Lock和synchronized的比较
- Lock和Synchronized的比较
- Lock接口与synchronized
- Lock和synchronized比较
- Lock和synchronized比较
- 关于synchronized与lock的性能比较
- Lock与synchronized 的比较学习
- Lock接口与Synchronized关键字的区别
- Lock和synchronized比较详解(转)
- Lock和synchronized比较详解
- Lock和synchronized比较详解
- synchronized和lock比较浅析
- synchronized和lock比较浅析
- Lock和synchronized比较详解
- synchronized和lock比较浅析
- jQuery(1)__jQuery基础<对象,元素,属性>
- Eclipse快捷键
- Python闭包与装饰器总结
- label添加字符间距
- 【雪野实训记录】Oracle数据库 T6作业——游标管理
- Lock接口与读写锁(lock 和 synchronized 的比较)
- PreferenceActivity
- NetBeans PHP 项目创建
- 并查集
- 对Java中的深复制和浅复制的一些理解
- 迷宫大门
- c++ sort函数的用法
- golang http 编程-1(服务器编程)
- Access denied for user 'root'@'%' to database 'ranger' ErrorCode: 1044