- 浏览: 32321 次
- 性别:
- 来自: 湖南
文章分类
最新评论
JDK5开始新增了两种锁机制:ReentrantReadWriteLock和ReentrantLock。
对于ReentrantReadWriteLock锁机制:
1、重入方面其内部的WriteLock可以获取ReadLock,但是反过来ReadLock想要获得WriteLock则永远都不要想。
2、WriteLock可以降级为ReadLock,顺序是:先获得WriteLock再获得ReadLock,然后释放WriteLock,这时候线程将保持Readlock的持有。反过来ReadLock想要升级为WriteLock则不可能。
3、ReadLock可以被多个线程持有并且在作用时排斥任何的WriteLock,而WriteLock则是完全的互斥。这一特性最为重要,因为对于高读取频率而相对较低写入的数据结构,使用此类锁同步机制则可以提高并发量。
4、不管是ReadLock还是WriteLock都支持Interrupt,语义与ReentrantLock一致。
5、WriteLock支持Condition并且与ReentrantLock语义一致,而ReadLock则不能使用Condition,否则抛出UnsupportedOperationException异常。
class CachedData { Object data; volatile boolean cacheValid; ReentrantReadWriteLock rwl = new ReentrantReadWriteLock(); void processCachedData() { rwl.readLock().lock(); if (!cacheValid) { // Must release read lock before acquiring write lock rwl.readLock().unlock(); rwl.writeLock().lock(); // Recheck state because another thread might have acquired // write lock and changed state before we did. if (!cacheValid) { data = ... cacheValid = true; } // Downgrade by acquiring read lock before releasing write lock rwl.readLock().lock(); rwl.writeLock().unlock(); // Unlock write, still hold read } use(data); rwl.readLock().unlock(); } }
发表评论
-
HttpClient容易忽视的细节——连接关闭
2012-03-02 09:15 576HttpClient client = new HttpCli ... -
HTTPClient的多线程编程
2012-03-02 09:09 1442Axis2的连接主要采用了HttpClient进行与服务器的服 ... -
HttpClient超时区别
2012-03-02 09:07 1040HttpClient 4 设置超时 httpclient 超时 ... -
HttpClient Theading
2012-03-01 10:49 633有技术兴趣的 请加28830308群. 这篇文章概括了怎样在 ... -
HttpClient使用
2012-03-01 10:43 668有技术兴趣的 请加28830308群. HttpClien ... -
线程请求执行,一个多线程程执行HTTP请求的例子。
2012-03-01 10:40 1715package cn.lake.util; import ... -
httpclient 4 下载 文件
2012-03-01 10:38 883import java.io.File; import ja ... -
使用了httpclient实现的上传商品的demo
2012-03-01 10:36 1113package com.taobao.top.sample.u ... -
socket简介
2012-02-07 10:58 648第一步 充分理解Socket ... -
转载socket
2012-02-07 10:57 526对TCP/IP、UDP、Socket编程这些词你不会很陌生吧? ... -
Java的synchronized关键字:同步机制总结
2012-02-07 10:54 530不久前用到了同步,现在回过头来对JAVA中的同步做个总结,以对 ... -
JAVA RMI
2012-02-07 10:53 542Java RMI 指的是远程方法调用 (Remote Meth ... -
JXL生成复杂的EXCEL
2011-12-26 13:52 1339public String ExcelTaskRepo ... -
如何快速的为现有数据库建立数据字典?
2011-12-20 13:55 951大部分项目在验收时都需要向客户提供一份详细的数据字典,而编写数 ... -
在java中获取客户端真实的IP地址
2011-12-20 13:55 517public static String getRemoteA ... -
用JavaMail的API发送邮件
2011-12-20 13:55 4951、MimeMessage的包装类 public c ... -
在项目中整合FreeMarker框架
2011-12-16 15:40 556FreeMarker是一个用Java编写的模板引擎,既可以 ... -
Commons FTP范例
2011-12-16 15:33 479public class FtpUtil { privat ... -
Java实现的图片生成器
2011-12-16 15:32 483一、本图片生成器具有以下功能特性: 1、可以设置图 ... -
jacob学习总结
2011-12-16 15:27 400JACOB 就是 JAVA-COM Bridge的缩写,提供自 ...
相关推荐
JDK5垃圾回收机制资料大全,都是我平时从网上收集的,
JDK 5中文文档PDF文档JDK 5中文文档PDF文档JDK 5中文文档PDF文档JDK 5中文文档PDF文档
JDK 5 0 zip 欢迎下载 JDK 5 0 zip 欢迎下载 JDK 5 0 zip 欢迎下载
jdk5.zip。程序
jdk5 win64
jdk5 win7 64位下载jdk5 win7 64位下载jdk5 win7 64位下载
JDK11安装包,JDK11安装包JDK11安装包,JDK11安装包JDK11安装包,JDK11安装包JDK11安装包,JDK11安装包JDK11安装包,JDK11安装包JDK11安装包,JDK11安装包JDK11安装包,JDK11安装包JDK11安装包,JDK11安装包JDK11...
沈东良JDK5 API 方便开发者查询察看使用
guava-jdk5
JDK8新增便利的Map默认值方法Java开发Java经验技巧共7页.pdf.zip
模拟JDK AWT的事件处理机制模拟JDK AWT的事件处理机制
Java 2入门经典 JDK 5 JDK 5 Edition14
JDK5 64位 JDK5 64位
Java多线程--JDK5.0新增线程创建方式
jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助...
JDK5_新特性,当你不知道jdk1.5较之前版本新加了哪些内容,不妨看看它
jdk5、jdk6新特性系统介绍.chm 系统、全面 本人自己整理的资料
jdk5,解压后,即可使用
IBM JDK5 垃圾收集策略,第 1 部分
jdk7 jdk8 jdk9 jdk10 jdk11 jdk12 jdk13 jdk14 (win-64位) 资源共享