随笔分类 - 并发编程
摘要:线程池详解 1. 核心参数核心线程数(corePoolSize)最大线程数(maximumPoolSize)空闲线程存活时间(keepAliveTime)存活时间单位(unit)工作队列线程工厂(threadFactory)拒绝策略(rejectedHandler) 2. 工作原理数据字典线程池生命
阅读全文
摘要:1. 简介 简单描述CyclicBarrier的功能,那就是 它允许一组线程互相等待,直到到达某个公共屏障点 (Common Barrier Point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 Barrier 在释放等待线程后
阅读全文
摘要:1. 简介 简单描述Semaphore 的功能,那就是 信号量 Semaphore 是一个控制访问多个共享资源的计数器,和 CountDownLatch 一样,其本质上是一个“共享锁” 2. 实现原理 在Semaphore声明阶段对许可量进行初始化,配置许可量数量permit调用acquire方法会
阅读全文
摘要:1. 简介 简单描述CountDownLatch的功能,那就是 在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待 2. 实现原理 CountDownLatch 是通过一个计数器来实现的,当我们在 new 一个 CountDownLatch 对象的时候,需要带入该计数器值,该值就表
阅读全文
摘要:synchronized原理剖析 1、使用方式1.1 修饰实例方法&方法块实例对象1.2 修饰静态方法&方法块实例对象1.3 修饰静态方法&方法块类 2、实现方式2.1 同步方法2.2 同步代码块 3、底层原理3.1 对象头3.2 Monitor Object设计模式3.3 管程机制 4、锁优化4.
阅读全文
摘要:ThreadLocal原理剖析 1、基础概念Stack & HeapThreadLocalThreadLocalMapEntry 2、源码核心方法解析get()源码setInitialValue()源码get()方法时序图set()源码remove()源码remove()方法时序图 3、核心算法哈希
阅读全文
摘要:JDK1.8 // 和AtomicInteger的实现基本都是一样的,参考AtomicInteger标记 public class AtomicReference<V> implements java.io.Serializable { private static final long seria
阅读全文
摘要:JDK1.8 // 大部分和AtomicInteger没有太多差别,只标记不同的地方 public class AtomicLong extends Number implements java.io.Serializable { private static final long serialVe
阅读全文
摘要:环境JDK1.8 public class AtomicInteger extends Number implements java.io.Serializable { private static final long serialVersionUID = 6214790243416807050L
阅读全文
摘要:JDK1.8 public class AtomicBoolean implements java.io.Serializable { private static final long serialVersionUID = 4654671469794556979L; // setup to use
阅读全文