![](https://img-blog.csdnimg.cn/20201215145025872.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java并发编程
文章平均质量分 97
Java并发编程
LeslieGuGu
人生如逆旅,我亦是行人
展开
-
由浅入深,全面解析ThreadLocal
文章目录ThreadLocal全面解析1. ThreadLocal介绍1.1 官方介绍1.2 基本使用1.2.1 常用方法1.2.2 使用案例1.3 ThreadLocal类与synchronized关键字1.3.1 synchronized同步方式1.3.2 ThreadLocal与synchronized的区别2. 运用场景_事务案例2.1 转账案例2.1.1 场景构建2.1.2 引入事务2.2 常规解决方案2.2.1 常规方案的实现2.2.2 常规方案的弊端2.3 ThreadLocal解决方案2.原创 2021-01-24 15:16:12 · 9407 阅读 · 9 评论 -
并发编程(十)J.U.C之 LinkedBlockingQueue 、ConcurrentLinkedQueue 、CopyOnWriteArrayList
这里写自定义目录标题3. LinkedBlockingQueue 原理3.1 基本入队出队入队出队3.2 加锁分析put 操作take 操作3.3 与ArrayBlockingQueue的性能比较4. ConcurrentLinkedQueue 原理5. CopyOnWriteArrayListget 弱一致性迭代器弱一致性3. LinkedBlockingQueue 原理 public class LinkedBlockingQueue<E> extends AbstractQueu原创 2021-01-23 18:57:10 · 1897 阅读 · 3 评论 -
并发编程(九)J.U.C 之 ConcurrentHashMap原理
文章目录1. 线程安全集合类概述1.1 线程安全集合类可以分为三大类1.2 重点2. ConcurrentHashMap2.1 使用不安全的集合类示例2.2 JDK 7 HashMap 并发死链死链复现源码分析2.3 JDK 8 ConcurrentHashMap重要方法重要属性和内部类构造器分析get 流程put流程putVal()方法initTable()方法addCount()方法size()方法 计算流程transfer()方法2.4 JDK 7 ConcurrentHashMap构造器分析put(原创 2021-01-23 16:49:04 · 372 阅读 · 3 评论 -
并发编程(八)J.U.C之读写锁、Semaphore、CountdownLatch、CyclicBarrier
文章目录1 J.U.C1.3 读写锁1. ReentrantReadWriteLock2. 应用之缓存3. 读写锁原理图解流程源码分析4. StampedLock1.4 Semaphore基本使用图解流程源码分析1.5 CountdownLatch1.6 CyclicBarri1 J.U.C1.3 读写锁1. ReentrantReadWriteLock当读操作远远高于写操作时,这时候使用读写锁让读-读可以并发,提高性能。读-写,写-写都是相互互斥的!提供一个数据容器类内部分别使用读锁保护数据的r原创 2021-01-22 16:55:53 · 271 阅读 · 0 评论 -
并发编程(七)J.U.C之AQS原理、ReentrantLock原理
这里写自定义目录标题8.2 J.U.C8.2.1 AQS 原理8.2.2 ReentrantLock 原理1. 非公平锁实现原理图解流程加锁源码解锁源码2. 可重入原理3. 可打断原理4. 公平锁实现原理5. 条件变量实现原理图解流程源码分析8.2.3 读写锁1. ReentrantReadWriteLock2. 应用之缓存3. 读写锁原理图解流程源码分析4. StampedLock8.2.4 Semaphore基本使用图解流程源码分析8.2.5 CountdownLatch8.2..6 CyclicBar原创 2021-01-21 16:32:53 · 282 阅读 · 0 评论 -
并发编程(六)共享模型之线程池
文章目录8.1 线程池8.1.1 自定义线程池8.1.2 ThreadPoolExecutor1) 线程池状态2) 构造方法3) newFixedThreadPool4) newCachedThreadPool5) newSingleThreadExecutor6) 提交任务7) 关闭线程池异步模式之工作线程8) 任务调度线程池9) 正确处理执行任务异常10) Tomcat 线程池8.1.3 Fork/Join8.1 线程池池化技术相比大家已经屡见不鲜了,线程池、数据库连接池、Http 连接池等等都是原创 2021-01-20 21:26:08 · 395 阅读 · 0 评论 -
并发编程(五)共享模型之不可变
文章目录7. 共享模型之不可变7.1 日期转换的问题7.2 不可变设计final 的使用保护性拷贝模式之享元final的原理7.3 本章小结问题7. 共享模型之不可变7.1 日期转换的问题问题提出,下面的代码在运行时,由于 SimpleDateFormat 不是线程安全的,有很大几率出现 java.lang.NumberFormatException 或者出现不正确的日期解析结果。 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM原创 2021-01-20 15:25:36 · 275 阅读 · 3 评论 -
并发编程(四)共享模型之无锁
文章目录6. 共享模型之无锁6.1 问题提出解决思路-无锁6.2 CAS 与 volatilecasvolatile为什么无锁效率高CAS 的特点6.3原子整数6.4 原子引用ABA 问题及解决AtomicStampedReferenceAtomicMarkableReference6.5 原子数组6.6 字段更新器6.7 原子累加器累加器性能比较源码之 LongAddercas 锁原理之伪共享add 方法分析sum 方法分析6.8 Unsafe概述Unsafe CAS 操作6.9总结6. 共享模型之无锁原创 2021-01-19 23:59:52 · 2501 阅读 · 6 评论 -
并发编程(三)共享模型之内存
文章目录1. 共享模型之内存1.1 Java 内存模型1.2 可见性退不出的循环解决方法可见性 vs 原子性模式之两阶段终止模式之 Balking1.3 有序性诡异的结果volatile 原理如何保证可见性如何保证有序性double-checked locking 问题double-checked locking 解决happens-before总结习题balking 模式习题线程安全单例习题1.4本章小结1. 共享模型之内存上一章讲解的 Monitor 主要关注的是访问共享变量时,保证临界区代码的【原原创 2021-01-19 17:53:19 · 330 阅读 · 1 评论 -
并发编程(二)共享模型之管程
文章目录共享模型之管程1.1 线程出现问题的根本原因分析问题的进一步描述临界区竞态条件1.2 synchronized 解决方案synchronizedsynchronized原理synchronized 加在方法上“线程八锁”1.3 变量的线程安全分析1.3.1 成员变量和静态变量的线程安全分析1.3.2 局部变量线程安全分析线程安全的情况线程不安全的情况不安全原因分析解决方法思考 private 或 final的重要性1.3.3 常见线程安全类线程安全类方法的组合不可变类的线程安全示例分析-是否线程安原创 2021-01-18 15:27:23 · 375 阅读 · 0 评论 -
并发编程(一)进程与线程、Java线程
文章目录1.线程与进程1.1 进程与进程进程线程二者对比1.2 并行与并发并发并行二者对比应用同步和异步的概念1) 设计2) 结论2.java线程2.1 创建和运行线程方法一,直接使用 Thread方法二,使用 Runnable 配合 Thread小结方法三,FutureTask 配合 Thread2.2 线程运行原理虚拟机栈与栈帧线程上下文切换(Thread Context Switch)2.3 Thread的常见方法2.3.1 start 与 run调用start调用run小结2.3.2 sleep 与原创 2021-01-15 15:14:11 · 289 阅读 · 0 评论