
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 · 393 阅读 · 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 · 175 阅读 · 0 评论 -
JUC并发:ThreadLocal原理与源码解析
ThreadLocal原理ThreadLocal给我们的独立线程提供存放局部变量缓存。避免线程安全问题1、多线程情况下2、每个线程之间相互隔离3、传递参数应用场景:Seata解决分布式事务问题创建一个全局的事务Id缓存到ThreadLocal中;执行我们的目标方法从ThreadLocal去除全局的事务Id传递给接口TreadLocal核心API1、Get获取当前线程缓存的局部变量2、Set根据当前线程做缓存局部变量3、Remove从当前线程移除缓存通过Threa原创 2022-02-25 12:41:26 · 316 阅读 · 0 评论 -
JUC并发:AQS源码详细解析
LockSupport原理是什么:线程等待唤醒机制(wait/notify)的升级加强版;LockSupport当中的park()和unpark()的作用分别是阻塞线程和解除阻塞线程;Synchronized,Lock和LockSupport对比SynchronizedLock的ConditionLockSupport等待wait()await()park()唤醒notify()signal()unpark(Thread thread)wait,not原创 2022-02-25 12:34:09 · 294 阅读 · 0 评论 -
JUC并发:线程池详解,从原理到实际使用
线程池池化技术:事先准备好一些资源,有人要用,就来我这里拿,用完之后还给我线程池的好处:线程复用,可以控制最大并发数,管理线程1、降低资源的消耗;2、提高响应速度;3、方便管理;三大方法、七大参数、四种拒绝策略三大方法:1、ExecutorService threadPool = Executors.newSingleThreadExecutor();// 创建单个线程2、ExecutorService threadPool = Executors.newFixedThreadPool原创 2022-02-25 11:48:36 · 215 阅读 · 0 评论 -
JUC并发:8锁现象,判断锁的是谁
8锁现象如何判断锁的是谁!永远的知道什么是锁,锁到底锁的是谁?????深刻理解我们的锁1、synchronized 锁的对象是方法的调用者!多个方法用的是同一个锁,谁先拿到谁执行!2、增加了一个普通方法后!普通方法不受锁的影响,所以会先走普通方法!3、两个对象,两个同步方法,则有两个方法的调用者,所以是有两把锁!4、增加两个静态的同步方法,只有一个对象。static 静态方法 ,类一加载就有了!锁的是Class,全局唯一;5、两个对象!增加两个静态的同步方法,锁的是Class,全局唯一,还原创 2022-02-25 10:58:29 · 267 阅读 · 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 · 193 阅读 · 0 评论