06 2021 档案
摘要:并发编程-线程池的设计原理&使用 这一篇,我们来聊一聊线程池,和他的设计原理,以及一些关键参数和如何动态设计线程参数,很多东西咱们在之前的文章中已经讨论过,这一篇就相对轻松点,run。 线程池 创建线程遇见的麻烦 线程的频繁创建和销毁需要消耗cpu的资源 线程数量越多,cpu的资源的开销就越大 如果
阅读全文
摘要:并发编程-ConcurrentHashMap(二) 昨天说到扩容前面的准备工作,和一系列的判断,其中我觉得设计精妙的就是他的那个【高低位扩容】,精巧的使用了二进制,从某种层面讲,提升了性能,因为二进制的那个变量的存储,就相同于一个容器,如果不使用它,那肯定要new出一个容器进行存储,这就会占用内存。
阅读全文
摘要:并发编程-ConcurrentHashMap(一) 本篇来聊聊1.8的ConcurrentHashMap(CHS),关于它的一些设计思想(高低位扩容、链式寻址法、链表 so on),数据结构,和源码试实现行剖析,本篇会讲到前面的一部分代码分析,包括(延迟初始化、阈值判断扩容、以及高低位扩容) 为什么
阅读全文
摘要:并发编程-ThreadLocal&ForkJoinPool(使用以及原理分析) 本章只要聊聊两个东西,这里会给出如何使用他们,并且分析各自的源码以及原理。 【ThreadLocal】:在指定线程中存储数据,数据存储后只有指定线程可以获得 【ForkJoinpool】:实际上他类似于【hadoop】他
阅读全文
摘要:并发编程-阻塞队列&JUC常用工具 本章主要和大家聊聊之前的阻塞队列,并且聊聊他如何使用,以及JUC中常用的一些工具,例如【CountDownLatch】、【Semaphore】、【CyclicBarrier】这些都是控制线程的一些工具,我们会聊聊他们如何使用,以及实现原理。 阻塞队列(之前聊过一下
阅读全文
摘要:并发编程-Condition源码分析&基于Condition实现阻塞队列 上一篇说猜测了condition的实现原理,本篇对condition源码进行剖析,并且来使用condition实现一个阻塞队列,同时聊聊有哪些东西的底层使用了condition。So Run。。。 上篇回顾 主要是这两个方法
阅读全文
摘要:并发编程-ReentrantLock锁源码分析&Condition设计 上一篇我们分析了Lock锁的实现,这一篇我们来着眼于他的底层实现,以及来分析Condition,并且对比他和wait()以及notify()。 Lock源码分析 首先Lock下面有ReentrantLock的实现,在Reentr
阅读全文
摘要:并发编程-JMM&ReentrantLock锁以及原理 JMM(Java Memory Model(Java内存模型)):我们都明白java是一个一次编译多处运行的语言,然而在不同的系统架构中拥有不同的内存模型,java是一个跨平台的虚拟系统,所以他有制定了自己的内存模型,内存模型描述了程序中各个变
阅读全文
摘要:并发编程-(volatile)可见性&有序性 【可见性】:就是两个线程对同一个变量进行修改线程a修改后,线程b没有读取到修改后的数据,类似于数据库中的脏读。 【有序性】:在java内存模型中,允许编译器和处理器对指令进行重新排序,在单线程的时候不影响,但是在多线程的时候,就会影响执行结果的正确性。
阅读全文

浙公网安备 33010602011771号