![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
文章平均质量分 92
All-Might
这个作者很懒,什么都没留下…
展开
-
2.1 CompletableFuture详解
CompletableFuturejava架构位置CompletableFuture实现了Future接口和 CompletionStage接口 架构图如下CompletionStage是什么CompletionStage:代表异步计算过程中的某一个阶段,一个阶段完成以后可能会触发另外一个阶段一句话总结:餐馆点菜详情:我现在点的一个菜在餐馆中没有材料,老板同时要求3个人把所有材料全部都买回来了,然后厨师下锅把这些材料依次添加进去,最后出锅的是一道已经做好的菜品 而不是材料一个阶段的计算或执行可原创 2021-03-11 17:03:14 · 681 阅读 · 1 评论 -
java juc LockSupport详解
LockSupport是什么用来创建锁和其他同步类的基本线程阻塞原语LockSupport就是线程等待唤醒机制 wait/notify 的改良加强版那么问题来了,为什么要加强等待唤醒机制,原来使用的等待唤醒机制有什么缺点使用synchornized和Lock的等待唤醒机制1. 使用Object中的 wait() 方法让线程等待,使用Object中的notify() 方法唤醒线程问题1.使用wait和notify的时候 必须包裹在synchronized关键字中使用wait和notify的时候,原创 2021-02-02 10:44:51 · 165 阅读 · 2 评论 -
2.多线程的创建方式
以下内容全部都来自 bilibili 宋红康老师java基础部分内容P415 ~ P446 小节中 https://www.bilibili.com/video/BV1Kb411W75N?p=415多线程的创建方式共有 4 种继承Thread类的方式实现Runnable接口的方式实现Callable接口的方式使用线程池创建本篇文章讲前面 3 种1、使用继承Thread类的方式创建多线程*步骤:*创建一个继承与Thread类的子类重写Thread类的run() 方法 ,将想要用子线程原创 2021-01-31 15:14:21 · 230 阅读 · 0 评论 -
java线程池详解
tips:右侧有导航什么是线程池线程池做的工作只是控制运行的线程数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量,超过数量的线程排队等候,等其他线程执行完毕,再从队列中取出任务来执行线程池有什么优点降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗提高响应速度,当任务到达时,任务可以不需要等待线程创建就能立即执行。提高线程的课管理型。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,是用线程池可以进行统原创 2021-01-29 14:34:30 · 229 阅读 · 0 评论 -
java阻塞队列
什么是阻塞队列:一句话总结:食堂排队打饭,就是一个阻塞队列特点:当队列是空的,从队列中获取元素的操作将会被阻塞当队列是满的,从队列中添加元素的操作将会被阻塞队列为空的时候不能消费,满的时候不能添加就是阻塞队列举个例子,在蛋糕店里面买面包,如果面包卖完了,那么消费者就不能买了,如果装蛋糕的柜子已经放满了,那么做蛋糕的师傅就不会再生产蛋糕了用处:在某些情况下会挂起线程(阻塞), 一旦条件满足,被挂起的线程又会自动被唤醒为什么需要,好处是什么:不需要关心什么时候需要阻塞线程,什么时候需要唤醒原创 2021-01-25 17:57:22 · 233 阅读 · 0 评论 -
java多线程CountDownLatch、CyclicBarrier、Semaphore详解
CountDownLatch, CyclicBarrier, Semaphore是什么控制线程之间通信的工具类,在juc包下CountDownLatch作用:用来控制线程顺序 ( 一堆线程运行,当其他所有线程运行完成后,在执行指定的线程 )一句话总结:班长最后离开教室案例:现在有6个人和班长在教室里上自习,要求 班长等所有学生离开教室后,才能锁门走人//问题代码:public static void main(String[] args) { for (int i = 1; i <原创 2021-01-25 14:00:57 · 312 阅读 · 0 评论 -
java 锁
公平锁和非公平锁什么是公平锁多个线程按照申请锁的顺序来获取锁,类似排队打饭 先来后到什么是非公平锁多个线程获取锁的顺序并不是按照锁的顺序,有可能后申请的线程比现申请的线程优先获取锁,在高并发的情况下,有可能会造成优先级反转或优先级饥饿现象优先级反转:A 线程先申请获取锁,B后申请,但是B优先获得锁,然后是A优先级饥饿:A、B、C 3个线程按照顺序申请获取锁,到快要执行B的时候,C加塞 获取B的锁资源,每次B要获取的时候,C都来加塞,导致B卡住一天了都没有执行创建juc包中,Reentrant原创 2021-01-23 14:16:19 · 108 阅读 · 0 评论 -
java CAS详解
什么是CAS(Compare and swap - 比较并交换)CAS的全称为 compare and swap 它是一条CPU 并发原语什么叫做CPU并发原语原语的执行必须是连续的,在执行过程中不允许被中断,也就是说CAS是一条CPU原子指令,不会造成所谓的数据不一致问题CAS的功能是什么判断内存某个位置的值是否为预期值,如果是 则更改为新的值,这个过程是原子的 是通过unsafe类来保证原子性CAS的底层原理是什么, 为什么可以保证原子性自旋锁unsafe类什么是UnSafe类,U原创 2021-01-18 14:09:20 · 1079 阅读 · 0 评论 -
JAVA中Volatile关键字详解
JAVA中Volatile关键字详解什么是VolatileVolatile是java虚拟机提供的<轻量级>的同步机制,synchronized太重了Volatile的3大特性是什么保证了JMM的可见性不保证JMM的原子性禁止指令重排什么是JMM ( java memory model )JMM(java memory model),jmm本身是一个抽象的概念,并不真实存在 他描述的是一组规则或规范 (类似于12生肖中的龙并不真实存在 ) , 规范定义了程序中各个变原创 2021-01-12 17:45:20 · 310 阅读 · 0 评论 -
1.线程基础知识
以下内容全部都来自 bilibili 宋红康老师java基础部分内容P415 ~ P446 小节中https://www.bilibili.com/video/BV1Kb411W75N?p=415什么是程序为了完成特定任务,用某种语言编写的一组指令的集合。既指一段静态的代码什么是进程是程序的一次执行过程,或是 正在运行的一个程序。是一个动态的过程,他自身的产生、存在、消亡的过程 — 生命周期什么是线程进程可以进一步细化为线程,是一个程序内部的一条执行路径。程序和进程有什么区...原创 2020-11-26 19:54:10 · 98 阅读 · 0 评论