分布式锁介绍 分布式执行一些不需要同时执行的复杂任务,curator利用zk的特质,实现了这个选举过程。其实就是利用了多个zk客户端在同一个位置建节点,只会有一个客户端建立成功这个特性。来实现同一时间,只会选择一个客户端执行任务 代码 InterProcessMutex 是一个可重入的排他锁,获取锁 ...
分类:
其他好文 时间:
2019-11-18 12:29:56
阅读次数:
84
public class CopyOnWriteArrayList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable 直译过来,就是写时复制的动态数组。 add(E e)方法,使用可重入锁ReentrantLoc ...
分类:
其他好文 时间:
2019-11-16 23:28:24
阅读次数:
80
一、锁分类 线程要不要锁住同步资源?锁住--悲观锁不锁住--乐观锁 锁住同步资源如果失败,线程要不要阻塞?阻塞不阻塞--自旋锁,适应性自旋锁 多个线程竞争同步资源的流程细节上的区别?不锁住资源,多个线程中只有一个能够修改资源成功,其它线程会去重试--无锁同一个线程执行同步资源时自动获取资源--偏向锁 ...
分类:
编程语言 时间:
2019-11-13 23:49:44
阅读次数:
114
线程同步: 现实生活中,我们会遇到“同一个资源,多个人都想使用”的问题,比如,食堂排队打饭,每个人都想吃饭,最天然的解决办法就是,排队,一个个来。 处理多线程问题时,多个线程访问同一个资源对象,并且某些线程还想修改这个对象。这时候我们就需要线程同步。线程同步其实就是一种等待机制,多个需要同时访问此对 ...
分类:
编程语言 时间:
2019-11-10 13:51:55
阅读次数:
74
延迟阻塞队列DelayQueue DelayQueue 是一个支持延时获取元素的阻塞队列, 内部采用优先队列 PriorityQueue 存储元素, 同时元素必须实现 Delayed 接口;在创建元素时可以指定多久才可以从队列中获取当前元素,只有在延迟期满时才能从队列中提取元素。 使用场景 缓存系统 ...
分类:
其他好文 时间:
2019-11-02 00:29:55
阅读次数:
118
一、Lock接口 1. Java5之后,JDK新增了Lock接口,实现锁的功能,与synchronized关键字类似 2. 源码 二、ReentrantLock 1. 实现了Lock接口 2. 是synchronized的替代,ReentrantLock是Java语言层面实现的锁机制,synchro ...
分类:
其他好文 时间:
2019-11-01 09:52:17
阅读次数:
73
进程捕捉到信号并对其进行处理时,进程正在执行的正常指令序列就会被信号处理程序临时中断,它首先执行该信号粗合理程序中的指令;如果从信号处理程序返回,则继续执行捕捉到信号时进程正在执行的正常指令序列; ps:如果了解驱动,上面这段信号打断流程与中断打断进程上下文很类似; 对于有些函数,是不可重入的,如果 ...
分类:
其他好文 时间:
2019-10-30 13:54:13
阅读次数:
102
无状态对象(既不包含任何域,也不包含任何其他类中域的引用)一定是线程安全的。 Final 可重入锁:为了避免死锁 安全发布 ...
分类:
其他好文 时间:
2019-10-26 10:44:30
阅读次数:
108
死锁 指两个或两个以上的进程或线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程 递归锁: 解决死递归方法 python提供了可重入锁RLock RLock内部维护着一个Lock和一 ...
分类:
其他好文 时间:
2019-10-23 19:47:27
阅读次数:
58
1.0 数据结构 ConcurrentHashMap 是由 Segment 数组 结构和 HashEntry 数组 结构组成。 Segment 是一种可重入锁 ReentrantLock,在 ConcurrentHashMap 里扮演锁的角色,HashEntry 则用于存储键值对数据。 Concur ...
分类:
其他好文 时间:
2019-10-21 16:09:11
阅读次数:
100