随笔分类 -  并发编程

摘要:在了解内存屏障之前,我们先了解一下JMM模型的8种原子操作: 1.lock 锁定 : 把主内存中的一个变量标志为一个线程独享的状态 2.unlock 解锁 : 把主内存中的一个变量释放出来 3.read 读:将主内存中的变量读到工作内存中 4.load 加载:将工作内存中的变量加载到副本中 5.us 阅读全文
posted @ 2022-03-19 11:47 吃肉不长肉的小灏哥 阅读(168) 评论(0) 推荐(0)
摘要:上节java内存模型(jmm)概念初探大致了解了由于cpu的快速发展,导致的越来越复杂的内存模型诞生,java内存模型相当于是底层内存模型的映射(实际并不是一一映射,但可以借鉴理解),也是衍生出并发三大特性:可见性,原子性,有序性,在多线程情况下这些特性也有多种方式可以保证,如volatile,sy 阅读全文
posted @ 2022-03-18 13:40 吃肉不长肉的小灏哥 阅读(93) 评论(0) 推荐(0)
摘要:1.和java内存结构的区别: 很多人会把jmm和Java内存结构搞混,网上搜到的一些文章也是如此,java内存结构就是我们常说的堆,栈,方法区,程序计数器..., 当jvm虚拟机启动的时候,会初始化这些内存区域。而java内存模型是一套虚拟机规范,它遵循虚拟机规范定义了一套用于处理多线程下对数据的 阅读全文
posted @ 2022-03-16 13:04 吃肉不长肉的小灏哥 阅读(336) 评论(0) 推荐(0)
摘要:ConcurrentHashMap在我的面试生涯中,10次有8次是会被问到的,记得刚毕业那会,被问到ConcurrentHashMap源码的无助与苦涩,无奈只能网上找了一些教程,背一背,才算是蒙混过关,当然其实这种法子是不推崇的,而且不能真正理解源码真谛,遇到高手还是很容易就问出来的,那么我们这篇就 阅读全文
posted @ 2021-03-08 21:07 吃肉不长肉的小灏哥 阅读(116) 评论(0) 推荐(0)
摘要:Map的实现有很多种,而HashMap算是最经典的实现之一了吧,在平时的使用中,绝大部分的使用也都是HashMap,我记得刚入行那会,脑子里对Map的使用就是Map map = new HashMap(); ,而在面试中,HashMap的实现原理也是高频面试题。那么热度如此之高的HashMap的神秘 阅读全文
posted @ 2021-02-03 19:45 吃肉不长肉的小灏哥 阅读(125) 评论(0) 推荐(1)
摘要:上篇花了很大篇幅写了synchronized的加锁流程,并对比了ReentrantLock的设计,这篇我们收个尾,来聊一聊解锁流程,本来准备一章解决的,写着写着觉得内容过多,其实上一篇和ReentrantLock那篇结合起来都理解了,对锁的理解以及足够了,无论是公平锁,非公平锁,乐观锁,悲观锁,轻量 阅读全文
posted @ 2021-01-28 23:49 吃肉不长肉的小灏哥 阅读(368) 评论(0) 推荐(0)
摘要:建议读这篇文章的小伙伴先看一下我的ReentrantLock的文章,附上链接:https://www.cnblogs.com/gmt-hao/p/14125742.html 上篇写完了ReentrantLock源码实现,从我们的角度分析设计锁,在对比大神的实现,顺道拍了一波道哥的马屁,虽然他看不到, 阅读全文
posted @ 2021-01-27 20:17 吃肉不长肉的小灏哥 阅读(1392) 评论(2) 推荐(1)
摘要:写这篇确实挺伤脑筋的,是按部就班一行一行读,但是我想这么写估计很多没有接触过的可能就劝退了,很容易出现的一种现象就是看了后面忘了前面,而且很容易看了一行代码就一层层往下钻,这样不仅容易打击看源码的积极性,而且效率贼低。doug lea大神的代码设计的那么精妙,浪费时间在这上面太可惜了。 在讲doug 阅读全文
posted @ 2020-12-13 16:09 吃肉不长肉的小灏哥 阅读(291) 评论(0) 推荐(0)
摘要:写这篇文章之前,我去百度了一下啥叫锁,百度百科上写道:置于可启闭的器物上,以钥匙或暗码开启。确实我们一般理解的锁就是门锁,密码锁,但是在计算机科学中,锁又是啥,说实话,这个问题我也思考了很久,也没法很好的用一两句话就让人听得明白,也不想有人看到我的文章,然后将我的结论当作答案,我觉得最好的答案还是在 阅读全文
posted @ 2020-12-10 18:12 吃肉不长肉的小灏哥 阅读(185) 评论(0) 推荐(0)
摘要:1.symaPhore简介 symaphore(信号量)用来控制同时访问某个资源的线程数量,一般用在并发流量控制。个人对它的理解相当于是接待室每次只能接待固定数量的人,当达到最高接待数的时候,其他人就会被拦截在外等待,当前面接待完走出接待室,才会继续接待下面的人。 2.symaphore使用 sym 阅读全文
posted @ 2018-08-20 14:42 吃肉不长肉的小灏哥 阅读(218) 评论(0) 推荐(0)
摘要:1.CountDownLatch countDownLatch的作用是让一组线程等待其他线程完成工作以后在执行,相当于加强版的join(不懂可以百度一下join的用法),一般在初始化的时候会在构造方法传入计数器, 后续,在其他线程中每次调用countDown方法计数器减一,一般在需要等待的线程中调用 阅读全文
posted @ 2018-08-18 11:28 吃肉不长肉的小灏哥 阅读(548) 评论(0) 推荐(0)
摘要:1.什么是分而治之 分而治之就是将一个大任务层层拆分成一个个的小任务,直到不可拆分,拆分依据定义的阈值划分任务规模。 fork/join通过fork将大任务拆分成小任务,在将小任务的结果join汇总 2.fork/join标准范式 先上图 在使用fork/join做任务分配之前,首先得了解其中的几个 阅读全文
posted @ 2018-07-27 09:16 吃肉不长肉的小灏哥 阅读(3073) 评论(0) 推荐(0)