多线程
文章平均质量分 93
意姆斯Talk
这个作者很懒,什么都没留下…
展开
-
并发(四):ReentrantLock之条件等待队列
详细文案可以看下链接, 关注一波, 后期分享经典面试题并发(四):ReentrantLock之条件等待队列并发(四):ReentrantLock之条件等待队列并发(四):ReentrantLock之条件等待队列并发(四):ReentrantLock之条件等待队列并发(四):ReentrantLock之条件等待队列条件等待队列在并发(三):ReentrantLock类中,谈到了锁,每个ReentrantLock锁对应很多个条件等待队列,而synchronized锁只存在一个条件等待队列。//图中的Reen原创 2022-06-21 21:45:33 · 492 阅读 · 0 评论 -
并发(五):细讲JAVA线程池
详细文案可以看下链接, 关注一波, 后期分享经典面试题并发(五):细讲JAVA线程池并发(五):细讲JAVA线程池并发(五):细讲JAVA线程池并发(五):细讲JAVA线程池本模块的中心不是单线程,单线程就是:一个线程,对应执行的任务,线程只有一个,可是处理的任务可以有很多,只有累死的一头牛(线程),没有耕坏的地(任务)。单线程的生命周期:创建-执行-销毁,最影响性能的是:创建和销毁,而线程池可以很好的帮我们管控线程,监控线程,循环利用线程。线程池的好处:避免频繁的创建和销毁线程,省去这一部分的消耗时间,原创 2022-06-21 21:43:48 · 548 阅读 · 0 评论 -
并发(二):synchronized关键字
详细原地址并发(二):synchronized关键字详细原地址并发(二):synchronized关键字详细原地址并发(二):synchronized关键字大纲内容设置锁的意义synchronized原理synchronized锁升级问题1:多线程场景下,如何争夺Monitor锁对象?问题2:为什么Java中任意的对象都可以作为锁?上文问题:为什么在DCL单例模式下,加了synchronized锁,代码块退出后,还要禁止指令重排序? 难道不是在持有锁的线程内,等重排序完之后,才会释放锁吗?设置锁的意原创 2022-06-16 14:16:09 · 128 阅读 · 0 评论 -
并发(三):ReentrantLock类
上文问题:为什么在DCL单例模式下,加了synchronized锁,代码块退出后,还要禁止指令重排序? 难道不是在持有锁的线程内,等重排序完之后,才会释放锁吗?在DCL单例模式下, 使用volatile是保证指令重排序,创建对象分为三步:第一,给对象分配内存空间,第二给对象初始化,第三变量与内存空间建立链接,其中第二第三步不存在数据依赖,固可以重排序,当线程2判断if(instance==null),这个等号是比较内存地址值的,判断当前变量的内存地址值是不是为null,这里就涉及了字节码知识,当store指原创 2022-06-16 14:06:33 · 185 阅读 · 0 评论 -
并发(一):JMM和Volatile关键字
本文:理论知识偏多, 可自行掌握。JMM是一种抽象思想,是一组规范,定义了程序中每个共享变量的访问方式,JMM是围绕着原子性,有序性,可见性展开的。JMM定义了线程和主内存之间的抽象关系,主内存中主要保存着共享变量,每个线程中都有工作内存,是线程私有的,线程对共享变量的操作必须在工作内存中进行,首先要把变量从主内存中拷贝到自己的工作内存,然后对变量进行操作,操作完后再写回主内存中,不能直接操作主内存中的变量。线程之间的通信必须依靠主内存来进行读写的。1:初始值假设x=0,当线程A从主内存中读取x值时,放原创 2022-06-16 08:51:39 · 97 阅读 · 0 评论 -
高并发场景实战: 线程池,countDownLatch,CompletableFuture混合使用
写在前面: 希望大家从一开始就跟着敲, 收获一定是满满的, 末尾会留公众号,想一起努力的小朋友可以一起加入,由兴趣可一起维护我们共同的公众号。1:项目搭建需要引入的maven//提供线程池,TransmittableThreadLocal两个工具类<dependency> <groupId>com.alibaba</groupId> <artifactId>transmittable-threa.原创 2021-08-14 15:25:16 · 2337 阅读 · 0 评论 -
Java线程池核心方法源码解析(附带流程图), 字字注释,一起交流
线程池核心方法源码1.execute(Runnable command)1.1源码public void execute(Runnable command) { //1.判断当前任务是否为空, 若为空, 则抛出空指针异常 if (command == null) throw new NullPointerException(); /* * Proceed in 3 steps: * one. 如果运行的线原创 2021-03-31 11:58:24 · 160 阅读 · 0 评论 -
Java多线程之线程池面试无压力(一)
1. 概念1.1单线程的优缺点本文的中心不是单线程, 一句话带过: 只有累死的牛(一个线程), 没有耕坏的地(任务)优点: 毫无疑问, 提高性能缺点: 创建线程, 会频繁的去访问操作系统, 又要自己手动创建和销毁, 浪费资源, 没有一个上限的束缚, 影响性能, 浪费的是创建和销毁的这个时间!!!1.2 线程池的简述作用: 限制了一个线程数量, 对线程进行统一的分配,调优和监控优点和缺点优点: 降低资源消耗, 提高响应速度, 提高线程的可管理性, 提供定期执行的线程池, 目前没有代替线程池原创 2021-03-23 22:00:54 · 121 阅读 · 0 评论