该类是一个读写锁的改进,它的思想是读写锁中读不仅不阻塞读,同时也不应该阻塞写。 读不阻塞写的实现思路: 在读的时候如果发生了写,则应当重读而不是在读的时候直接阻塞写! 因为在读线程非常多而写线程比较少的情况下,写线程可能发生饥饿现象,也就是因为大量的读线程存在并且读线程都阻塞写线程, 因此写线程可能 ...
分类:
其他好文 时间:
2018-04-05 23:15:32
阅读次数:
187
基础与控制原语 读写锁 与互斥量类似,但读写锁允许更高的并行性。其特性为:写独占,读共享。 读写锁状态: 一把读写锁具备三种状态: 1. 读模式下加锁状态 (读锁) 2. 写模式下加锁状态 (写锁) 3. 不加锁状态 读写锁特性: 读写锁是"写模式加锁"时, 解锁前,所有对该锁加锁的线程都会被阻塞。... ...
分类:
编程语言 时间:
2018-04-05 20:05:25
阅读次数:
210
此处源码分析,主要是基于读锁,非公平机制,JDK1.8。 问题: 1、ReentrantReadWriteLock是如何创建读锁与写锁? 2、读锁与写锁的区别是什么? 3、锁的重入次数与获取锁的线程数分别是用哪种方式记录的? 4、当队列中出现多个共享模式的线程节点连续排列时,那么当第一个共享模式的线 ...
分类:
其他好文 时间:
2018-04-05 11:40:47
阅读次数:
258
说到配置文件热加载,这个功能在很多框架中都提供了,如beego,实现的效果就是当你修改文件后,会把你修改后的配置重新加载到配置文件中,而不用重启程序,这个功能在日常中还是非常实用的,毕竟很多时候,线上的配置文件不是想改就能改的。 这次就自己实现一个配置文件的热加载功能的包,并通过一个简单的例子对完成 ...
分类:
其他好文 时间:
2018-03-17 23:28:21
阅读次数:
499
首先介绍一些乐观锁与悲观锁: 悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。再比如Java里面的同步原语s ...
分类:
编程语言 时间:
2018-03-17 12:13:00
阅读次数:
211
读写锁接口:ReadWriteLock,它的具体实现类为:ReentrantReadWriteLock 使用场景: 对于一个资源,读读能共存,读写不能共存,写写不能共存。 锁降级:从写锁变成读锁; 锁升级:从读锁变成写锁。 ReentrantReadWriteLock不支持锁升级,支持锁降级 会死锁 ...
分类:
编程语言 时间:
2018-03-14 20:45:45
阅读次数:
213
转载请注明出处:http://www.cnblogs.com/skywang12345/p/3505809.html ReadWriteLock 和 ReentrantReadWriteLock介绍 ReadWriteLock,顾名思义,是读写锁。它维护了一对相关的锁 — — “读取锁”和“写入锁” ...
分类:
编程语言 时间:
2018-03-12 23:01:38
阅读次数:
405
原文:http://blog.csdn.net/l1028386804/article/details/73523810 1. 可重入锁(Reentrant Lock) Redisson的分布式可重入锁RLock Java对象实现了java.util.concurrent.locks.Lock接口, ...
分类:
编程语言 时间:
2018-03-12 13:27:01
阅读次数:
1520
言简意骇,帮助大家理解 悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之 ...
分类:
其他好文 时间:
2018-03-12 11:03:19
阅读次数:
130