多线程
文章平均质量分 59
diaoxiadezidan
这个作者很懒,什么都没留下…
展开
-
关于volatile的一个有趣demo
闲聊 这是一个测试volatile的例子。 首先我们td不添加volatile,以下的逻辑,创建一个线程让它去修改该flag,但不是让它立刻去修改,,而是先让子线程休息一段时间,好让主线程进入狂读flag的状态,这样做是为了防止低运行强度下 cpu主动刷新了缓存。之后我们进行修改。 public class VolatileTest { static ThreadDemo td = new ThreadDemo(); public static void main(String[]原创 2021-02-20 11:14:34 · 250 阅读 · 0 评论 -
阻塞队列源码分析
闲聊 阻塞队列有很多,比如ArrayBlockingQueue,LinkedBlockingQueue等。他们原理上都差不多区别只在于存储上,这里只以ArrayBlockingQueue来做源码分析。 看源码之前我以为很高端,看了之后。。。你懂的。。。这篇的篇幅明显比之前的线程池要短得多。 正文 入队操作 作为看源码的入口,就以offer方法来进行分析,虽然也有add,但是offer明显要常用的多,如果去看其他的源码的话,也能明显感到offer用的要多一些,毕竟可以知道插入是否成功,是不是要自旋插原创 2021-02-08 15:44:26 · 79 阅读 · 0 评论 -
线程池参数和相关原理
本篇文章会拿ThreadPoolExecutor来进行源码分析。 1.闲聊 线程池,顾名思义,线程的池子。说到池子我们可以联想到很多东西,数据库连接池,线程池等等。 他们有什么共同点呢? 池化,也就是我们希望通过一个池化的方式来对连接进行把控。我们不希望同一时间连接过多,导致线程过多,占用资源过大。 这种感觉有点像JVM,我们不希望我们因为一些琐事而增加我们的开发成本。 2.正题 进入正题,创建线程池有如下这么多的参数,如果直接说的话不方便理解,我们就直接从execute进入,毕竟这个方法是最原创 2021-02-07 16:45:41 · 71 阅读 · 0 评论