多线程实战
文章平均质量分 79
水的精神
一件事,要么不做,要么做到极致。
展开
-
JMM中的happen-before原则你知道么?
JMM又是什么? JMM 就是一组规则,这组规则意在解决在并发编程可能出现的线程安全问题,JMM (Java Memory Model)是 Java 内存模型,JMM 定义了程序中各个共享变量的访问规则,即在虚拟机中将变量存储到内存和从内存读取变量这样的底层细节.并提供了内置解决方案(happen-before 原则)及其外部可使用的同步手段(synchronized/volatile 等),确保了程序执行在多线程环境中的应有的 原子性,可视性及其有序性。 JMM 规定了所有的变量都存储在主内...原创 2021-05-22 09:43:06 · 373 阅读 · 3 评论 -
把《并发编程艺术》这本书整理成一张脑图,构建多线程的知识脉络
针对脑图的话,网上也是有比较多的。我谷歌的前几页,都看了一遍,最终筛选出来一个最详细的放在这里。分享给大家。这篇文章主要的目的是来帮助我们构建多线程知识脉络。因为多线程的知识点是非常多的,记忆起来比较难,平常开发会用到多线程,但是不可能全部都用到。这么都知识点,哪一点用到的时候都是重点,所以很难说只记重点。记忆方法比较重要,先记住一个框架,然后再去展开。算法里边叫做广度优先遍历。脑图是一个不错的构建知识框架的方式。网上的脑图,基本上都是根据《java并发边程艺术》这本书整理出来的书籍。这篇文章.原创 2021-05-01 23:58:13 · 402 阅读 · 0 评论 -
用生活的故事总结一下线程通信
线程之间通信,就像人与人之间通信一样重要。我觉得理解一个问题,就要建立在我们已有的认知上,就会容易很多。我将列举几个生活的例子,然后再对比的线程之间通信的例子。# #线程通信就像是人和人通信 先用直白的话来讲,线程通信的目的,就和人之间的通信的目的一样。为了交换信息,为了通知消息。# # 场景一,约好一起做 比方说,你周末想约隔壁的王阿姨,一起去...原创 2020-04-18 00:48:02 · 337 阅读 · 0 评论 -
手写线程池
我们先不去看线程池原理,然后自己一步一步的分析,看看线程池都需要做哪些工作。然后再一步一步的实现它,然后再去对比比人写好的线程池,然后看看差距在哪里。# #先分析为什么要用线程池 线程是任务调度的最小单位,其实可以这样理解,线程就是搬运的货车,将需要执行的字节码搬运给CPU去处理。 如果不使用线程池的话,有可能无限的去创建线程,系统的资源是有限的,一个服务器,如...原创 2020-03-19 10:11:17 · 278 阅读 · 0 评论 -
利用多线程通过对业务优化实现性能优化—— 性能优化利用 Thread 的 join
我们可以使用join方法做到将程序并行。举个例子:我们在开发过程中往往会遇到这样的场景,就是一个非常复杂的业务逻辑里边,比方说订票,如果说飞机票和火车票作为一个组装行程。比方说我要去莫斯科,我人在A地,然后我可以选择去B地坐飞机,但是A地到B地这一段,我想做高铁。如果这作为一个订单的话,就意味着,下单过程需要到12306去扣火车票,然后到航空公司去扣飞机票。 对于上边的下单的过程,...原创 2020-03-14 17:13:24 · 365 阅读 · 0 评论