随笔分类 - JUC
发表于 2020-06-14 17:40阅读:300评论:0推荐:1
摘要:文章目录 各种锁的理解1、公平锁、非公平锁2、共享锁、独占锁3、可重入锁4、自旋锁自定义简单的锁 5、死锁死锁排查 jps 关于进程、线程、并发、并行的问题 各种锁的理解 1、公平锁、非公平锁 公平锁:非常公平,任何线程获得公平锁,那么就会执行锁中业务直到结束,过程中任何进程都不得干预打扰。不能插队
阅读全文 »
发表于 2020-06-14 17:36阅读:661评论:0推荐:0
摘要:AQS AQS介绍 java.util.concurrent.locks 包中的 AbstractQueuedSynchronizer (抽象队列同步器)类 该类是用于构建锁和同步器的框架。 使用该类可以简单且高效的构造出应用广泛的同步器,比如:ReentrantLock, Semaphore, R
阅读全文 »
发表于 2020-06-14 17:32阅读:359评论:0推荐:0
摘要:文章目录 深入理解CAS JDK1.5 CAS会出现ABA问题 解决ABA 原子引用 - AtomicStampedReference遇到的坑 CAS实现原子操作3大问题 使用synchronized会比CAS操作慢和效率低 深入理解CAS JDK1.5 在计算机科学中,比较和交换(Conmpare
阅读全文 »
发表于 2020-06-14 17:17阅读:246评论:0推荐:0
摘要:文章目录 单例模式 1、饿汉式 2、懒汉式 3、DCL懒汉式 通过反射破坏单实例 第1种 第2种 4、静态内部类 5、枚举 尝试反射获取枚举实例 第一种尝试 第二种尝试 总结 单例模式 单例模式,即单个实例,只有一个实例 1、饿汉式 饿汉模式,可以想象一个很饿的人,需要立马吃东西,饿汉模式便是这样,
阅读全文 »
发表于 2020-06-14 17:12阅读:367评论:0推荐:0
摘要:文章目录 JMM(java memory model) Volatile 关键字 保证可见性 volatile++复合操作不保证原子性 单个volatile操作保证原子性 禁止指令重排 JMM(java memory model) 什么是JMM JMM:java内存模型(java memory mo
阅读全文 »
发表于 2020-06-14 17:07阅读:537评论:0推荐:0
摘要:文章目录 ForkJoinPool类 JDK 1.7 常用方法 ForkJoinTask\ 抽象类 RecursiveAction 抽象类 RecursiveTask\ 抽象类 LongStream 接口 案例 使用ForkJoin,并行Stream计算大数据的和 CompletableFuture
阅读全文 »
发表于 2020-06-14 17:03阅读:536评论:0推荐:0
摘要:文章目录 线程池 1、3大方法 2、7大参数 ThreadPoolExecutor 类 执行过程原理 3、4种拒绝 4、自定义线程池 CPU密集型 IO密集性 混合型 线程池最大线程数应该如何定义? 线程池 3大方法、7大参数、4种拒绝 自定义线程池 1、3大方法 不推荐使用该3大方法,请使用Thr
阅读全文 »
发表于 2020-06-14 16:53阅读:270评论:0推荐:0
摘要:文章目录 JUC常用工具(组件)类 JDK 1.5 1、CountDownLatch 构造方法 常用方法 2、CyclicBarrier 构造方法 常用方法 3、Semaphore 构造方法 常用方法 4、Exchanger - CountDownLatch 与 CyclicBarrier 的区别
阅读全文 »
发表于 2020-06-14 16:50阅读:251评论:0推荐:0
摘要:文章目录 Lock 接口 (重点) 1、ReentrantLock 类 2、Lock与Synchronized的区别 面试 3、防止线程虚假唤醒 解决虚假唤醒分析 面试 4、Condition 接口 JDK 1.5 5、Condition实现精准通知唤醒 6、关于锁的问题 面试 解决集合类线程不安全
阅读全文 »
发表于 2020-05-01 13:27阅读:196评论:0推荐:0
摘要:自定义同步组件 TwinsLock TwinsLock.java 自定义简单的同步组件,该工具至多只允许2个线程同时访问,超过2个线程的访问将被阻塞,加入到同步队列中,这个自定义规则的工具为TwinsLock。 由于允许2个线程同时获取同步锁,所以该同步组件是共享的。 通俗的说:AQS是写同步的规则
阅读全文 »