![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
文章平均质量分 74
不是章鱼的章鱼哥
马达马达达内
展开
-
线程池ThreadPoolExecutor源码分析
本期带大家来分析线程池ThreadPoolExecutor的源码,在看本文之前最好要知道线程池的执行逻辑和核心参数,这样更方便从源码入手分析流程。 重要的属性 //高3位表示线程池运行状态,除去高3位后的低位,表示当前线程池中线程的数量 private final AtomicInteger ctl = new AtomicInteger(ctlOf(RUNNING, 0)); //表示在ctl中存放线程数量的位数 private static final int COUNT_BITS = Integer原创 2021-12-07 14:13:37 · 2129 阅读 · 0 评论 -
ThreadLocal源码分析(jdk1.8)
ThreadLocal,从名字上可以知道和线程本地有关系,这个类会为每个线程提供属于线程自己的局部变量。ThreadLocal可以通过initialValue()为每个线程赋值,也可以由线程自己调用ThreadLocal的set()进行赋值。每个线程操作对应的变量时,与其他线程不会发生冲突,改动仅对自己可见。总的来说,ThreadLocal适用于变量在线程间隔离的场景,这里也可以看出ThreadLocal采用了空间换时间的策略保证并发安全。 在jdk1.7和1.8中,ThreadLocal原理并不相同,本文原创 2021-12-04 15:33:15 · 741 阅读 · 0 评论 -
单例模式双重检查锁问题分析
public class Singleton { private Singleton(){} private static Singleton instance; public static Singleton getInstance(){ //第一次判断,如果instance的值不为null,不需要抢占锁直接返回对象 if(instance==null){ synchronized (Singleton.class){原创 2021-05-06 14:15:33 · 334 阅读 · 2 评论