分布式锁三种实现方式: 1. 基于数据库实现分布式锁; 2. 基于缓存(Redis等)实现分布式锁; 3. 基于Zookeeper实现分布式锁; 一, 基于数据库实现分布式锁 1. 悲观锁 利用select … where … for update 排他锁 注意: 其他附加功能与实现一基本一致,这里 ...
分类:
数据库 时间:
2020-04-06 11:45:08
阅读次数:
65
1、HashMap里的hashcode方法和equal方法什么时候需要重写? 当使用HashMap时,如果key类型是一个对象类型,则需要在这个对象类型中重写hashcode()和equals()方法 HashMap存储数据的时候,会对key取hash值,如果key存在,则会把old value替换 ...
分类:
其他好文 时间:
2020-04-05 18:42:24
阅读次数:
62
1. 并发包中的ReentrantLock是偏向锁河轻量级锁码? 是的。 2. 偏向锁跟可重入性有什么区别,非偏向锁如何实现可重入? 偏向锁和可重入性直接没啥关系。。 当然要是锁不具备可重入性,那就无所谓偏向了。 可重入性是指比如一个线程获得了对象A上的锁,如果它第二次请求A的锁必然可以获得(也就是 ...
分类:
其他好文 时间:
2020-04-04 09:33:34
阅读次数:
318
庚子鼠年 己卯月 乙亥日 描述 ? 今天学习了JUC的相关知识,在此强烈推荐一本书,阿里孤尽的《码出高效》,虽然这本书我买了半年了,也看了一些,以前有很多地方看不懂,现在随着对java学习的深入,觉得这是一本很好的书。通过对线程,锁概念的学习,也意识到操作系统学习的重要性,以前学习操作系统的时候,觉 ...
分类:
其他好文 时间:
2020-04-03 00:14:01
阅读次数:
72
一、全称 AbstractQueueSynchronier 二、并发包的使用 ReentrantLock:new ReentrantLock()/lock()/unlock() ReentranReadWriteLock 可重入锁:对同一个对象可以多次加锁 三、底层 1.抽象同步队列三个核心组件:加 ...
分类:
其他好文 时间:
2020-04-02 12:02:12
阅读次数:
78
1、听故事把知识掌握了 在一个村子里面,有一口井水,水质非常的好,村民们都想打井里的水。这井只有一口,村里的人那么多,所以得出个打水的规则才行。村长绞尽脑汁,最终想出了一个比较合理的方案,咱们来仔细的看看聪明的村长大人的智慧。 井边安排一个看井人,维护打水的秩序。 打水时,以家庭为单位,哪个家庭任何 ...
分类:
其他好文 时间:
2020-04-01 11:04:37
阅读次数:
68
重入锁ReentrantLock[Re entrant Lock] 1. ReentrantLock与Synchronized区别: 1. 重入锁可以反复进入 2. 如果同一个线程多次获得锁,那么在释放锁的时候,也需要释放相同次数 3. 若释放锁的次数过多,将会得到 java.lang.Illega ...
分类:
其他好文 时间:
2020-03-31 21:15:52
阅读次数:
74
lock 与 lockInterruptibly比较区别在于:lock 优先考虑获取锁,待获取锁成功后,才响应中断。lockInterruptibly 优先考虑响应中断,而不是响应锁的普通获取或重入获取。详细区别: ReentrantLock.lockInterruptibly允许在等待时由其它线程 ...
分类:
其他好文 时间:
2020-03-31 18:51:29
阅读次数:
63
前言 前面已经讲解了Redis的客户端Redission是怎么实现分布式锁的,大多都深入到源码级别。 在分布式系统中,常见的分布式锁实现方案还有Zookeeper,接下来会深入研究Zookeeper是如何来实现分布式锁的。 Zookeeper初识 文件系统 Zookeeper维护一个类似文件系统的数 ...
分类:
其他好文 时间:
2020-03-30 09:55:31
阅读次数:
75
1.锁是干什么用的 锁一般来说用作资源控制,限制资源访问,防止在并发环境下造成数据错误2.重入锁 重入锁也叫作递归锁,指的是同一个线程外层函数获取到一把锁后,内层函数同样具有这把锁的控制权限 synchronized和ReentrantLock就是重入锁对应的实现 synchronized重量级的锁 ...
分类:
其他好文 时间:
2020-03-25 19:45:19
阅读次数:
83