java ReadWriteLock 锁
2015-10-10 00:00
148 查看
对象的方法中一旦加入synchronized修饰,则任何时刻只能有一个线程访问synchronized修饰的方法。假设有个数据对象拥有写方法与读方法,多线程环境中要想保证数据的安全,需对该对象的读写方法都要加入 synchronized同步块。这样任何线程在写入时,其它线程无法读取与改变数据;如果有线程在读取时,其他线程也无法读取或写入。这种方式在写入操作远大于读操作时,问题不大,而当读取远远大于写入时,会造成性能瓶颈,因为此种情况下读取操作是可以同时进行的,而加锁操作限制了数据的并发读取。
在多线程开发中,经常会出现一种情况,我们希望读写分离。就是对于读取这个动作来说,可以同时有多个线程同时去读取这个资源,但是对于写这个动作来说,只能同时有一个线程来操作,而且同时,当有一个写线程在操作这个资源的时候,其他的读线程是不能来操作这个资源的,这样就极大的发挥了多线程的特点,能很好的将多线程的能力发挥出来。
ReadWriteLock解决了:当写操作时,其他线程无法读取或写入数据,而当读操作时,其它线程无法写入数据,但却可以读取数据
在多线程开发中,经常会出现一种情况,我们希望读写分离。就是对于读取这个动作来说,可以同时有多个线程同时去读取这个资源,但是对于写这个动作来说,只能同时有一个线程来操作,而且同时,当有一个写线程在操作这个资源的时候,其他的读线程是不能来操作这个资源的,这样就极大的发挥了多线程的特点,能很好的将多线程的能力发挥出来。
ReadWriteLock解决了:当写操作时,其他线程无法读取或写入数据,而当读操作时,其它线程无法写入数据,但却可以读取数据
相关文章推荐
- Java内存溢出示例
- java.util.logging自定义打印日志
- Java内存结构
- eclipse进行Debug的时候,发出“java breakpoint unable to install breakpoint”错误
- 10.9JAVA学习
- svn与eclipse进行整合开发
- spring boot实战(第八篇)上下文的创建
- java正确显示出字母且单词长度大于4的
- java监控工具备忘
- 我的成长比价系列:java web开发过程中遇到的错误一:sql语句换行错误
- java 控制反转和依赖注入的理解
- 解决Spring注解无法注入静态变量的问题
- 项目中使用的spring 注解说明
- Spring 4支持的Java 8新特性一览
- java线程学习(七)—java线程转储与堆栈
- lintcode排序矩阵中的从小到大第k个数-401(Java版)
- win7下JDK环境变量配置
- 下划线分隔符_运算符及其优先级JAVA011-014
- Java的Socket通信(多Clients/Server模型)
- Java高级5