随笔分类 -  lock 锁问题

各种锁问题
摘要:阿里的人问什么是锁膨胀,答不上来,回来做了总结: 关于锁的膨胀,synchronized的原理参考:深入分析Synchronized原理(阿里面试题) 首先说一下锁的优化策略。 1,自旋锁 自旋锁其实就是在拿锁时发现已经有线程拿了锁,自己如果去拿会阻塞自己,这个时候会选择进行一次忙循环尝试。也就是不 阅读全文
posted @ 2019-10-19 20:26 aspirant 阅读(11498) 评论(1) 推荐(3) 编辑
摘要:还有一篇 讲解lock的实现原理,参考:解决多线程安全问题-无非两个方法synchronized和lock 具体原理以及如何 获取锁AQS算法 (百度-美团) synchronized 不管是读还是写,如果前面有锁,只能是等待, lock中有读写锁,可以做到读读并发,读写互斥,写写互斥,但是sync 阅读全文
posted @ 2019-09-06 08:29 aspirant 阅读(95462) 评论(23) 推荐(44) 编辑
摘要:问题的关键是:方法: 阅读全文
posted @ 2019-06-25 15:15 aspirant 阅读(1272) 评论(0) 推荐(0) 编辑
摘要:很多小伙伴在学习Java的时候,总是感觉Java多线程在实际的业务中很少使用,以至于不会花太多的时间去学习,技术债不断累积!等到了一定程度的时候对于与Java多线程相关的东西就很难理解,今天需要探讨的东西也是一样的和Java多线程相关的!做好准备,马上开车! 学过Java多线程的应该都知道什么是锁, 阅读全文
posted @ 2018-06-19 18:09 aspirant 阅读(1268) 评论(0) 推荐(0) 编辑
摘要:Synchronzied 修饰非静态方法==》对象锁 Synchronzied 修饰静态方法==》其实是类锁,因为是静态方法,它把整个类锁起来了; 1.Synchronized修饰非静态方法,实际上是对调用该方法的对象加锁,俗称“对象锁”。 Java中每个对象都有一个锁,并且是唯一的。假设分配的一个 阅读全文
posted @ 2018-05-21 16:33 aspirant 阅读(10926) 评论(0) 推荐(1) 编辑
摘要:thread的run 和start的区别参考:多线程-Thread的run()与start()的区别 一、Thread的几个重要方法: 我们先了解一下Thread的几个重要方法。 a、start()方法,开始执行该线程;b、stop()方法,强制结束该线程执行;c、join方法,等待该线程结束。d、 阅读全文
posted @ 2018-04-21 11:36 aspirant 阅读(12206) 评论(2) 推荐(3) 编辑
摘要:本篇文章主要讲了lock的原理 就是AQS算法,还有个姊妹篇 讲解synchronized的实现原理 也是阿里经常问的, 参考:深入分析Synchronized原理(阿里面试题) 一定要看后面的文章,先说结论: 非公平锁tryAcquire的流程是:检查state字段,若为0,表示锁未被占用,那么尝 阅读全文
posted @ 2018-03-27 15:25 aspirant 阅读(20702) 评论(1) 推荐(10) 编辑
摘要:刚看到这个题目的时候无从下手,因为觉得synchronized和lock在加锁的方式上有很大不同,比如,看看正常情况下synchronized时如何加锁的。 方式一: public synchronized void a(){ //TODO } 方式二: 方式二: 从这两种方式来看,锁都是加在{}之 阅读全文
posted @ 2018-03-19 14:42 aspirant 阅读(5647) 评论(1) 推荐(2) 编辑
摘要:如果需要查看具体的synchronized和lock的实现原理,请参考:解决多线程安全问题-无非两个方法synchronized和lock 具体原理(百度) 在并发编程中,经常遇到多个线程访问同一个 共享资源 ,这时候作为开发者必须考虑如何维护数据一致性,在java中synchronized关键字被 阅读全文
posted @ 2017-06-01 19:28 aspirant 阅读(26754) 评论(1) 推荐(4) 编辑

点击右上角即可分享
微信分享提示