随笔分类 -  java中用到的锁

摘要:先聊下redis普通的分布式锁,用 1.单节点、主从/哨兵模式的分布式锁,安全吗? 或许你了解过,通过如下方式加锁: 设置锁时,使用set命令,因为其包含了setnx,expire的功能,起到了原子操作的效果,给key设置随机值,并且只有在key不存在时才设置成功返回True,并且设置key的过期时 阅读全文
posted @ 2020-03-29 17:42 架构之路 阅读(1457) 评论(0) 推荐(0)
摘要:Synchronize是重量级锁吗?是互斥锁吗? 它的实现原理? 前言 线程安全是并发编程中的重要关注点,造成线程安全问题的主要诱因有两点,一是存在共享数据(也称临界资源),二是存在多个线程共同操作共享数据。因此为了解决这个问题,我们可能需要这样一个方案,当存在多个线程操作共享数据时,需要保证同一时 阅读全文
posted @ 2020-03-22 18:18 架构之路 阅读(1792) 评论(0) 推荐(0)
摘要:经典的ABA问题: ABA问题存在CAS无锁方案中,我们写一个CAS的伪代码栗子: class SimulatedCAS{ volatile int count; int newValue; //实count+=1 addOne(){ do { newValue=count+1; //① }whil 阅读全文
posted @ 2020-03-01 17:40 架构之路 阅读(440) 评论(0) 推荐(0)
摘要:举个栗子: 原子性问题我们前面一直都是采用的互斥锁方案。 其实对于简单的原子性问题,还有一种无锁方案。Java SDK 并发包将这种无锁方案封装提炼之后,实现了一系列的原子类。 下面 Test中add的方法在,在多线程的情况下count最终可能<100000;因为 add 方法是非线程安全的。 1 阅读全文
posted @ 2020-03-01 17:35 架构之路 阅读(418) 评论(0) 推荐(0)
摘要:StampedLock 支持的三种锁模式 写锁、悲观读锁和乐观读 我们先来看看在使用上 StampedLock 和上一篇文章讲的 ReadWriteLock 有哪些区别。ReadWriteLock 支持两种模式:一种是读锁,一种是写锁。而 StampedLock 支持三种模式。其中写锁、悲观读锁的语 阅读全文
posted @ 2020-02-25 23:21 架构之路 阅读(207) 评论(0) 推荐(0)
摘要:你可能有这样一个疑问,Java SDK 并发包里为什么还有很多其他的工具类呢?原因很简单:分场景优化性能,提升易用性。 针对读多写少这种并发场景,Java SDK 并发包提供了读写锁——ReadWriteLock 读写锁,并不是 Java 语言特有的,而是一个广为使用的通用技术,所有的读写锁都遵守以 阅读全文
posted @ 2020-02-24 07:51 架构之路 阅读(482) 评论(0) 推荐(0)

========================================================================== 如果您觉得这篇文章对你有帮助,可以【关注我】或者【点赞】,希望我们一起在架构的路上,并肩齐行 ==========================================================================