![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JUC并发
文章平均质量分 74
深入探索JUC并发的魅力
呱呱
这个作者很懒,什么都没留下…
展开
-
JUC并发:CompletableFuture异步编排
1. 线程回顾 初始化线程的4种方式: 继承Thread 实现Runnable接口 实现Callable接口 + FutureTask (可以拿到返回结果,可以处理异常) 线程池 具体线程池的详细内容,可以去看我线程池的文章 2. CompletableFuture介绍 Future是Java 5添加的类,用来描述一个异步计算的结果。你可以使用isDone方法检查计算是否完成,或者使用get阻塞住调用线程,直到计算完成返回结果,你也可以使用cancel方法停止任务的执行。 虽然Future以及相关使用方原创 2022-02-27 14:18:25 · 332 阅读 · 0 评论 -
JUC并发:单例模式,双重检测锁,枚举
饿汉式单例 一开始加载全部内存资源,如果一些数据没有被使用,就会造成浪费空间 package com.zgq.single; //饿汉式==>构造器私有;一开始加载全部内存资源 public class Hungry { // 一开始加载全部内存资源,可能会浪费空间 private byte[] data1 = new byte[1024*1024]; private byte[] data2 = new byte[1024*1024]; private byte[]原创 2022-02-27 14:04:45 · 125 阅读 · 0 评论 -
JUC并发:ThreadLocal原理与源码解析
ThreadLocal原理 ThreadLocal给我们的独立线程提供存放局部变量缓存。 避免线程安全问题 1、多线程情况下 2、每个线程之间相互隔离 3、传递参数 应用场景: Seata解决分布式事务问题 创建一个全局的事务Id缓存到ThreadLocal中; 执行我们的目标方法 从ThreadLocal去除全局的事务Id传递给接口 TreadLocal核心API 1、Get获取当前线程缓存的局部变量 2、Set根据当前线程做缓存局部变量 3、Remove从当前线程移除缓存 通过Threa原创 2022-02-25 12:41:26 · 267 阅读 · 0 评论 -
JUC并发:AQS源码详细解析
LockSupport原理 是什么:线程等待唤醒机制(wait/notify)的升级加强版; LockSupport当中的park()和unpark()的作用分别是阻塞线程和解除阻塞线程; Synchronized,Lock和LockSupport对比 Synchronized Lock的Condition LockSupport 等待 wait() await() park() 唤醒 notify() signal() unpark(Thread thread) wait,not原创 2022-02-25 12:34:09 · 252 阅读 · 0 评论 -
JUC并发:线程池详解,从原理到实际使用
线程池 池化技术:事先准备好一些资源,有人要用,就来我这里拿,用完之后还给我 线程池的好处:线程复用,可以控制最大并发数,管理线程 1、降低资源的消耗; 2、提高响应速度; 3、方便管理; 三大方法、七大参数、四种拒绝策略 三大方法: 1、ExecutorService threadPool = Executors.newSingleThreadExecutor();// 创建单个线程 2、ExecutorService threadPool = Executors.newFixedThreadPool原创 2022-02-25 11:48:36 · 155 阅读 · 0 评论 -
JUC并发:8锁现象,判断锁的是谁
8锁现象 如何判断锁的是谁!永远的知道什么是锁,锁到底锁的是谁????? 深刻理解我们的锁 1、synchronized 锁的对象是方法的调用者!多个方法用的是同一个锁,谁先拿到谁执行! 2、增加了一个普通方法后!普通方法不受锁的影响,所以会先走普通方法! 3、两个对象,两个同步方法,则有两个方法的调用者,所以是有两把锁! 4、增加两个静态的同步方法,只有一个对象。static 静态方法 ,类一加载就有了!锁的是Class,全局唯一; 5、两个对象!增加两个静态的同步方法,锁的是Class,全局唯一,还原创 2022-02-25 10:58:29 · 235 阅读 · 0 评论 -
JUC并发:集合类线程不安全
集合类线程不安全时都会发生java.util.ConcurrentModificationException 并发修改异常!是集合类在并发下都会遇到的异常 1. List不安全 解决方案: 1、List list = new Vector<>(); 2、工具类:List list = Collections.synchronizedList(new ArrayList<>()); 3、JUC版: List list = new CopyOnWriteArrayList<>原创 2022-02-25 10:32:32 · 161 阅读 · 0 评论