
锁
天高任鸟飞-海阔凭鱼跃
天高任鸟飞 海阔凭鱼跃
展开
-
Redisson实现Redis分布式锁的底层原理
一、写在前面二、Redisson实现Redis分布式锁的底层原理 (1)加锁机制 (2)锁互斥机制 (3)watch dog自动延期机制 (4)可重入加锁机制 (5)锁释放机制 (6)此种方案Redis分布式锁的缺陷三、未完待续一、写在前面现在面试,一般都会聊聊分布式系统这块的东西。通常面试官都会从服务框架(Spring Cloud、Dubbo)聊起,一路聊到分布式事务、分布式锁、ZooKeeper等知识。所...转载 2020-12-15 18:12:55 · 370 阅读 · 0 评论 -
ZooKeeper分布式锁的实现原理
七张图彻底讲清楚ZooKeeper分布式锁的实现原理【石杉的架构笔记】文章转载自:https://juejin.im/post/5c01532ef265da61362232ed#comment(写的很好,建议先熟悉zookeeper基本操作和原理再看文章)一、写在前面之前写过一篇文章(《拜托,面试请不要再问我Redis分布式锁的实现原理》),给大家说了一下Redisson这个开源框架是如何实现Redis分布式锁原理的,这篇文章再给大家聊一下ZooKeeper实现分布式锁的原理。同理,我是直.转载 2020-12-15 17:49:35 · 157 阅读 · 0 评论 -
synchronized原理
1、sync的用法 1)access flag 方法 2)代码段(字节码会不一样) monitorenter monitorexit 3)unsafe.monitorEnter(Object var1) unsafe.monitorExit(Object var1) Unsafe 不能直接用,需要反射才可以2对象的内存结构: 1)对象头区域: Mark World 队...原创 2020-10-23 22:19:25 · 120 阅读 · 0 评论 -
分布式锁(redis锁和zk锁)
锁:synchronized 在单JVM环境下没问题,在分布式环境下有问题使用redis加锁可能出现的问题:1)业务代码报错导致的redis锁没有释放 解决方案:把释放锁的代码放到finally中执行2)业务工程宕机导致redis锁没有释放 解决方案:增加超时时间。超时时间要使用redis自带的超时时间的方法,如果单独设置了锁后再设置超时时间,有可能这中间宕机导致锁释放不了3)业务执行时间超出锁的超时时间,导致锁失效问题(锁超时设置10秒,A线程进入方法,业务需要15秒,...原创 2020-10-20 14:44:39 · 515 阅读 · 0 评论 -
Semaphore&CyclicBarrier源码分析
1 如何保证原子操作 int remaining = available - acquires; if (remaining < 0 || compareAndSetState(available, remaining)) return remaining;2 共享锁和独占锁的区别: 共享锁:一个线程获取锁成功后,出队的时候就去唤醒下一个线程。 独占锁:线程释放锁时才会...原创 2020-09-27 22:10:11 · 175 阅读 · 0 评论 -
2020-09-24
1 加锁的本质通过阻塞和唤醒机制,使多个线程序列化地访问同一个资源2 如何优雅的停止线程 java中断机制是一种协作机制,也就是 使用 t1.interrupted()设置中断标志位,然后再感知判断标志位处理 Thread.currentThread().interrupted() 会清除中断标志位 Thread.currentThread().isInterrupted() 不会清除中断标志位 sleep期间也能感知到中断信号,而且也会...原创 2020-09-24 22:20:55 · 106 阅读 · 0 评论 -
并发编程之JMM模型&Volatile详解
微共享: 当多个线程同时去多次去刷新一个缓存行的时候,会导致缓存反复失效,从而降低效率。可以通过填充数据,让多个线程的变量不在同一个缓存行来提高效率缓存行大小: 64byte注解:@sun.misc.Contended 要和JVM参数一起使用 前端编译 后端编译 0101010He...原创 2020-09-17 22:22:56 · 269 阅读 · 0 评论 -
sleep,wait,await,park的区别,看这一篇就够了
引子大家知道,我最近在招人,今天遇到个同学,他的源码看过一些,然后我就开始了AQS连环问。我:说说AQS的大致流程?他:AQS包含一个状态变量,一个同步队列……balabala……互斥锁balabala,共享锁balabala……我:AQS中除了同步队列,还有什么队列?他:还有个Condition,Condition中有个条件队列……我:条件队列和同步队列有什么区别?他:条件队列balabala,然后调用LockSupport.park()进入休眠,等待被唤醒,……,balaba转载 2020-08-05 14:19:32 · 6622 阅读 · 6 评论