之前还是写过蛮多的关于锁的文章的: http://www.cnblogs.com/charlesblc/p/5994162.html 《【转载】Java中的锁机制 synchronized & 偏向锁 & 轻量级锁 & 重量级锁 & 各自》 http://www.cnblogs.com/charle ...
分类:
编程语言 时间:
2016-12-16 22:12:42
阅读次数:
283
摘要 从使用场景的角度出发来介绍对ReentrantLock的使用,相对来说容易理解一些。 场景1:如果发现该操作已经在执行中则不再执行(有状态执行) if (lock.tryLock()) { //如果已经被lock,则立即返回false不会等待,达到忽略操作的效果 a、用在定时任务时,如果任务执 ...
分类:
其他好文 时间:
2016-10-08 13:59:23
阅读次数:
111
如何实现可重入?首先锁信息(指redis中lockKey关联的value值)必须得设计的能负载更多信息,之前non-reentrant时value直接就是一个超时时间,但是要实现可重入单超时时间是不够的,必须要标识锁是被谁持有的,也就是说要标识分布式环境中的线程,还要记录锁被入了多少次。如何在..
分类:
编程语言 时间:
2016-10-04 08:10:47
阅读次数:
547
在JDK5里面,提供了一个Lock接口。该接口通过底层框架的形式为设计更面向对象、可更加细粒度控制线程代码、更灵活控制线程通信提供了基础。实现Lock接口且使用得比较多的是可重入锁(ReentrantLock)以及读写锁(ReentrantReadWriteLock)。 1. ReentrantLo ...
分类:
编程语言 时间:
2016-08-27 23:16:52
阅读次数:
382
ConcurrentHashMap是有Segment数组结构和HashEntry数组结构组成。 Segment是一种可重入锁(ReentrantLock),在ConcurrentHashMap里扮演锁的角色; HashEntry则用于存储键值对数据。一个ConcurrentHashMap里包含一个S ...
分类:
其他好文 时间:
2016-07-30 00:16:37
阅读次数:
228
摘要:本文主要讲了读写锁。一、读写锁ReadWriteLock 在上文中回顾了并发包中的可重入锁ReentrantLock,并且也分析了它的源码。从中我们知道它是一个单一锁(笔者自创概念),意思是在多人读、多人写、或同时有人读和写时。只能有一个人能拿到锁,执行代码。但是在很多场景。我们想控制它能多人同时读,但是又不让它多人写或同时读和写时。(想想这是不是和数据库的可重复读有点类型?),...
分类:
编程语言 时间:
2016-07-19 10:32:20
阅读次数:
183
ReentrantLock可重入锁,使用比synchronized方便灵活,可作为替代使用:
1.支持公平/不公平锁;
2.支持响应超时,响应中断;
3.支持condition;
ReentrantLock实现了Lock接口,内部使用static类继承AQS实现独占式的api来实现这些功能,使用AQS的state来表示锁可重入次数:
之前学习AQS的时候说过请求和rele...
分类:
其他好文 时间:
2016-05-12 14:47:41
阅读次数:
189
锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized 和 ReentrantLock等等 ) 。这些已经写好提供的锁为我们开发提供了便利,但是锁的具体性质以及类型却很少被提及。本系列文章将分析JAVA下常见的锁名称以及特性,为大家答疑解惑。
四、可重入锁:
本文里面讲的是广义上的可重入锁,而不是单指JAVA下的ReentrantLock。
...
分类:
编程语言 时间:
2016-05-12 13:15:23
阅读次数:
156
这一章节我们来讨论一下可重入锁。1.什么是可重入锁?一个线程在执行一个带锁的方法,该方法中又调用了另一个需要相同锁的方法,则该线程可以直接执行调用的方法,而无需重新获得锁。2.特性:(1)同一对象,不同方法,可以获取同样的锁,然后重入package com.ray.deepintothread.ch02.topic_5;
public class ReGetInTheLock {
public...
分类:
编程语言 时间:
2016-04-29 16:41:56
阅读次数:
179
在学习或者使用Java的过程中进程会遇到各种各样的锁的概念:公平锁、非公平锁、自旋锁、可重入锁、偏向锁、轻量级锁、重量级锁、读写锁、互斥锁等待。这里整理了Java中的各种锁,若有不足之处希望大家在下方留言探讨。公平锁和非公平锁公平锁是指多个线程在等待同一个锁时,必须按照申请锁的先后顺序来一次获得锁。公平锁的好处是等待锁的线程不会饿死,但是整体效率相对低一些;非公平锁的好处是整体效率相对高一些,但是有...
分类:
编程语言 时间:
2016-04-22 20:23:53
阅读次数:
221