Java并发
文章平均质量分 96
光看不点赞
这个作者很懒,什么都没留下…
展开
-
Java多并发(七)| Executor框架(四种线程池详解)
FixedThreadPool:SingleThreadExecutor:CachedThreadPool:ScheduledThreadPoolExecutor:SingleThreadScheduledExecutor:概述流程图如果使用无界队列作为工作队列的影响,队列容量是MAX2.2 SingleThreadExecutor详解代码概述流程图2.3 CachedThreadPool详解代码概述流程图Synchronou原创 2022-06-25 21:04:51 · 1072 阅读 · 0 评论 -
Java多并发(六)| 线程池的基本概述(阻塞队列)
ArrayBlockingQueue(有界任务队列):LinkedBlockingQueue(无界任务队列):::SynchronousQueue(直接提交队列):PriorityBlockingQueue(优先任务队列):5.ThreadFactory(线程工厂)代码如下:6.keepAliveTime(存活时间) & unit(时间单位)概述3.向线程池提交任务的两种方式:execute()&submit()概述execute():submit():注意4监原创 2022-06-25 21:01:37 · 1528 阅读 · 0 评论 -
Java多并发(五)| JUC包下的并发容器(ConcurrentHashMap)& 并发工具类 & 原子变量类
jdk7和jdk8的区别效率底下的HashTableConcurrentHashMap的锁分段技术可以有效提高并发访问率1.2 JDK1.7与1.8的区别主要概括初始化segmentShift和segmentMask(注意:segmentShift != sshift)初始化每个segment定位Segmentget()方法put()方法是否需要扩容:如何扩容:2.3 定位尾节点概述2.4 设置入队节点为尾节点原创 2022-06-25 20:08:47 · 594 阅读 · 0 评论 -
Java多并发(四)| 锁(Lock接口 & AQS & ReentrantLock)
美团技术团队的文章,建议阅览1.2 Lock接口提供的synchronized关键字不具备的主要特性概述Lock相对于synchronized的缺点1.3 Lock接口的相关API图示基本结构节点的属性类型与名称及描述acquire方法引申出的addWaiter方法和enq方法acquire方法引申出的acquireQueued方法同步器的acquire方法调用流程图同步器的release方法即释放3. 共享式同步状态的获取和释放概述实现可原创 2022-06-25 19:28:44 · 677 阅读 · 0 评论 -
Java多并发(三)| 线程间的通信(ThreadLoacl详解)
Runnable:Running和Ready的合并几个方法的比较:初始化线程:开启线程的四种方式:实现Runnable接口实现Callable接口+FutureTask(可以拿到返回结果,可以处理异常)线程池(以后的章节会详解)四种方式的对比:理解中断:volatile关键字的通信:synchronized的通信(同步方法、代码块):Lock接口的各种锁:原子变量:结果分析调用过程图示细节:等待队列和同步队列的线程被notify通知后的行为:...原创 2022-06-25 19:15:57 · 539 阅读 · 0 评论 -
Java多并发(二)| cas & synchronized & volatile的内存语义
CAS实现原子操作的三大问题:synchronized关键字的修饰对象synchronized关键字修饰对象示例:修饰方法的语法:修饰静态方法的语法:1.2 内存语义对于同步块对于同步方法Java的对象头:对象头在Java内存中宏观存储位置如下图Java对象头的长度状态变化:偏向锁设置过程:偏向锁的撤销(升级为轻量级锁):偏向锁的关闭:轻量级锁加锁:轻量级锁解锁(升级为重量级锁):若当前只有一个等待线程,则该线程通过自旋进行等待。但是当自旋超过一定的次数,或者一个原创 2022-06-25 00:40:24 · 152 阅读 · 0 评论 -
Java多并发(一)| 并发机制的底层原理(内存模型、重排序)
对于上下文,先来了解下时间片:在并发编程中两个关键问题就是:锁的释放-获取建立的happens-before关系:锁的释放和获取的内存语义:锁释放与获取的总结:分类:final关键字(域)的重排序规则:对于final域,编译器和处理器要遵守两个重排序规则。分类:双重加锁代码2.1 双重锁定出现的问题概述分析问题根源的底层支持2.2 基于问题的解决方案-volatile概述优化代码2.3 基于问题的解决方案-类初始化(登记式/静态内部类)概述原创 2022-06-24 21:24:11 · 636 阅读 · 0 评论