
juc
文章平均质量分 88
猴子会跳舞
这个作者很懒,什么都没留下…
展开
-
SynchronousQueue源码分析_第二讲:非公平模式TransferStack
transfer 是最主要的方法,我们的put和take(放元素和取元素)都是调用这个方法来执行的,这里面一个有三个if else:1. 当前请求类型 和 栈顶的类型一样,入栈当前请求类型 和 栈顶的类型刚好匹配 (【Data,Request】和【Request,Data】),那么当前请求改为 Fulfilling 入栈,然后Fulfilling和它下面的元素结对出栈当栈顶元素为 Fulfilling类型,当前请求(不管是什么类型)协助里面的Fulfilling和它下面的元素出栈原创 2022-11-07 14:31:35 · 438 阅读 · 1 评论 -
SynchronousQueue源码分析_第一讲:引子
同步队列:虽然它叫队列,但是它没有容量,只能存一个数据,这个数据出来了,其它数据才能加进去,如果还没有数据就去拿,那么就会阻塞,直到加进去数据。原创 2022-11-06 21:53:39 · 317 阅读 · 0 评论 -
ThreadLocal源码第二讲(ThreadLocalMap)
什么是弱引用? 强引用 WeakReference weakA = new WeakReference(a); 弱引用 a = null;a是强引用,因为是强引用,后面那个new的A对象不会被GC 回收,但当a==null时,new的对象不会因为有weakA 而保留,依然会被GC回收,因为weakA 是一个弱引用。原创 2022-11-03 20:42:16 · 387 阅读 · 0 评论 -
ThreadLocal源码第一讲
ThreadLocal是一个全局对象,ThreadLocal是线程范围内变量共享的解决方案;ThreadLocal可以看作是一个map集合,key就是当前线程,value就是要存放的变量。ThreadLocal与Synchronized的区别ThreadLocal其实是与线程绑定的一个变量。ThreadLocal和Synchonized都用于解决多线程并发访问。用于线程间的数据隔离用于线程间的数据共享为每一个线程都提供一个副本threadLocals。原创 2022-11-02 21:07:11 · 111 阅读 · 0 评论 -
AQS_CyclicBarrier源码解析
从字面上的意思可以知道,这个类的中文意思是“循环栅栏”。大概的意思就是一个可循环利用的屏障。它的作用就是会让所有线程都等待完成后才会继续下一步行动。举个例子,就像是旅游团,有的人参观完景点 先回到大巴车上,有的人可能晚点才回到大巴车,但只有人都到齐了,大巴车才能开往下一个景点。这里的人就是各个线程,大巴车就是 CyclicBarrier。这个栅栏就是大巴车,各种颜色的先就是不同的线程代表人。不同的线程是不同时间到达的栅栏现在有五个玩家(对应五个线程),只有所有玩家都加载好后(都调用 await方法),原创 2022-10-30 18:30:17 · 140 阅读 · 0 评论