- 浏览: 33732 次
- 性别:
- 来自: 湖南
文章分类
最新评论
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 612HttpClient client = new HttpCli ... -
HTTPClient的多线程编程
2012-03-02 09:09 1475Axis2的连接主要采用了HttpClient进行与服务器的服 ... -
HttpClient超时区别
2012-03-02 09:07 1070HttpClient 4 设置超时 httpclient 超时 ... -
HttpClient Theading
2012-03-01 10:49 666有技术兴趣的 请加28830308群. 这篇文章概括了怎样在 ... -
HttpClient使用
2012-03-01 10:43 713有技术兴趣的 请加28830308群. HttpClien ... -
线程请求执行,一个多线程程执行HTTP请求的例子。
2012-03-01 10:40 1752package cn.lake.util; import ... -
httpclient 4 下载 文件
2012-03-01 10:38 938import java.io.File; import ja ... -
使用了httpclient实现的上传商品的demo
2012-03-01 10:36 1150package com.taobao.top.sample.u ... -
socket简介
2012-02-07 10:58 679第一步 充分理解Socket ... -
转载socket
2012-02-07 10:57 560对TCP/IP、UDP、Socket编程这些词你不会很陌生吧? ... -
Java的synchronized关键字:同步机制总结
2012-02-07 10:54 570不久前用到了同步,现在回过头来对JAVA中的同步做个总结,以对 ... -
JAVA RMI
2012-02-07 10:53 573Java RMI 指的是远程方法调用 (Remote Meth ... -
JXL生成复杂的EXCEL
2011-12-26 13:52 1376public String ExcelTaskRepo ... -
如何快速的为现有数据库建立数据字典?
2011-12-20 13:55 991大部分项目在验收时都需要向客户提供一份详细的数据字典,而编写数 ... -
在java中获取客户端真实的IP地址
2011-12-20 13:55 552public static String getRemoteA ... -
用JavaMail的API发送邮件
2011-12-20 13:55 5271、MimeMessage的包装类 public c ... -
在项目中整合FreeMarker框架
2011-12-16 15:40 579FreeMarker是一个用Java编写的模板引擎,既可以 ... -
Commons FTP范例
2011-12-16 15:33 501public class FtpUtil { privat ... -
Java实现的图片生成器
2011-12-16 15:32 517一、本图片生成器具有以下功能特性: 1、可以设置图 ... -
jacob学习总结
2011-12-16 15:27 439JACOB 就是 JAVA-COM Bridge的缩写,提供自 ...
相关推荐
JDK 1.9增加了对多重释放对象的检测机制,这有助于提高应用程序的安全性。当对象被多次释放时,可能会导致内存泄漏或其他问题,这一特性可以有效避免此类情况的发生。 #### 3. 堆外内存管理 为了更好地支持大数据...
本文详细介绍了如何配置JDK与Tomcat的过程,以及相关的知识点,包括数据库连接方式、实体-DAO模式、事务处理和锁机制等。这些知识对于Java开发者来说是非常重要的,有助于更好地理解和掌握Web应用开发的核心技术。
- **锁与同步机制**:深入分析不同类型的锁及其使用场景,如重入锁(ReentrantLock)、读写锁(ReadWriteLock)等。 ##### 3.3 虚拟机调优 - **JVM参数调整**:探讨如何通过调整JVM参数来优化程序性能,例如设置...
Java提供了一套丰富的多线程编程接口,如Runnable接口、Thread类、同步机制、锁以及并发工具类。这些内容对于编写支持高并发的Java应用程序非常重要。 8. 输入输出(I/O) Java的I/O库允许程序读写数据,包括流式I/...
新增了并发工具类,如Semaphore(信号量)、CyclicBarrier(循环栅栏)和CountDownLatch(计数门锁),这些工具类提供了更高级的同步和协调机制,帮助开发者编写出高效且线程安全的代码。同时,Executor框架的引入...
LongAdder的工作机制是,当线程尝试更新变量时,如果失败了,不是自旋CAS重试,而是尝试获取其他原子变量的锁,最后获取当前值时候是把所有变量的值累加后返回的。这样可以减少争夺共享资源的并发量,提高性能。 ...
3. Memory management:内存管理是JVM的核心组成部分,涉及对象分配、可达对象、垃圾回收、堆大小问题、堆锁分配和缓存分配等。文档详细描述了内存管理的工作机制,特别是垃圾回收(Garbage Collection),包括它的...
JDK 1.6在性能、安全性和功能方面进行了大量的改进,包括但不限于新的编译器技术、增强的垃圾回收机制、新的并发工具库以及对图形用户界面的支持等。 ### CHM格式的API文档 #### 1. **CHM格式的特点** - **压缩**...
线程的状态以及各状态之间的转换详解.mp4 ...JDK8新增锁StampedLock详解.mp4 重排序问题.mp4 happens-before简单概述.mp4 锁的内存语义.mp4 volatile内存语义.mp4 final域的内存语义.mp4 实战:问题定位.mp4
`computeIfAbsent`是JDK 1.8中新增的一个功能强大的方法,它的作用是在给定的键不存在于映射中时,通过提供的函数来计算该键对应的值,并将其插入到映射中。其基本语法如下: ```java V computeIfAbsent(K key, ...
ConcurrentHashMap在JDK7和JDK8中实现并发安全的机制有所不同。 **JDK7中的ConcurrentHashMap**通过分段锁(Segmentation)来实现。将数据分为一段一段地存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中...
第57节JDK8新增锁StampedLock详解00:29:37分钟 | 第58节重排序问题00:23:19分钟 | 第59节happens-before简单概述00:15:17分钟 | 第60节锁的内存语义00:13:54分钟 | 第61节volatile内存语义00:12:04分钟 | 第62...
第57节JDK8新增锁StampedLock详解00:29:37分钟 | 第58节重排序问题00:23:19分钟 | 第59节happens-before简单概述00:15:17分钟 | 第60节锁的内存语义00:13:54分钟 | 第61节volatile内存语义00:12:04分钟 | 第62...
第57节JDK8新增锁StampedLock详解00:29:37分钟 | 第58节重排序问题00:23:19分钟 | 第59节happens-before简单概述00:15:17分钟 | 第60节锁的内存语义00:13:54分钟 | 第61节volatile内存语义00:12:04分钟 | 第62...
第57节JDK8新增锁StampedLock详解00:29:37分钟 | 第58节重排序问题00:23:19分钟 | 第59节happens-before简单概述00:15:17分钟 | 第60节锁的内存语义00:13:54分钟 | 第61节volatile内存语义00:12:04分钟 | 第62...
- 锁机制:分析synchronized关键字和Lock接口的实现,理解并发控制的原理。 - 并发工具类:如ConcurrentHashMap、CountDownLatch、Semaphore等,源码揭示了它们在并发环境下的高效运作方式。 - Fork/Join框架:...
以上总结了IT面试中常见的知识点,涵盖了进程与线程状态、输入输出流、集合框架、Java内存模型、多态、JDK 1.5新特性、设计模式、Java中的锁机制、JVM基础知识以及异常处理等多个方面。通过掌握这些核心概念和技术,...