
Java多线程包
文章平均质量分 84
吃着油条唱歌
这个作者很懒,什么都没留下…
展开
-
JUC:ThreadPoolExecutor
ThreadPoolExecutor介绍源码地址:java.util.concurrent.ThreadPoolExecutor线程池意义:减少开销:重复使用纤尘资源,降低创建和回收的效率。便于管理:帮你维护线程ID,线程状态等信息。源码继承关系[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NXSWA6nP-1642494029647)(./image/t1.jpg)]ThreadPoolExecutor继承了AbstractExectorService原创 2022-01-18 16:23:00 · 263 阅读 · 0 评论 -
JUC:ConcurrentHashMap
ConcurrentHashMap看前本博客只是为了记录,学习流程,学习源码其大部分看的是ConcurrentHashMap 1.8 源码分析这位大佬的博客,写的十分详细,图文并茂非常易懂,十分推荐。我这篇博客只是在他的基础上加了点自己的理解(肯定有不少理解不到位的地方)以及查询了一些没讲到的函数。介绍源码: java.util.concurrent.ConcurrentHashMapHashMap有线程安全问题,导致出现链表死循环的情况。HashTable和ConcurrentHashMap没有原创 2022-01-18 16:20:16 · 241 阅读 · 0 评论 -
HashMap
HashMap1 介绍拉链散列算法的包装,在JDK1.8中运用数组+链表+红黑树的方法。2 源码2.1 属性static final int DEFAULT_INITIAL_CAPACITY = 1 << 4;//初始容量static final int MAXIMUM_CAPACITY = 1 << 30;//最大容量static final float DEFAULT_LOAD_FACTOR = 0.75f;//默认装载因子static final int TRE原创 2022-01-18 16:15:07 · 166 阅读 · 0 评论 -
JUC:CountDownLatch
CountDownLatch介绍基于AQS实现了闩(shuān)锁。运行一条或多条线程等待其他线程中的一组操作完成后,在继续执行。源码地址:java.util.concurrent.CountDownLatch流程:要解决的问题,主线程等待子线程的完成。主线程等待被唤醒,唤醒条件为子线程都完成,AQS中的state可以表示为等待执行完成的任务数,当一个任务完成,state–,当state==0时唤醒主线程。属性private final Sync sync;属性初始化时机public C原创 2022-01-18 16:13:45 · 287 阅读 · 0 评论 -
JUC:ReentrantLock
ReentrantLock1 介绍源码地址:java.util.concurrent.locks.ReentrantLockReentrantLock基于AQS,实现了公平锁和非公平锁,在开发中可以用它对共享资源进行同步,此外和synchronized一样,ReentrantLock支持可冲入,但ReentrantLock在调度上更加灵活,支持更丰富的功能。2 源码2.1 继承关系继承关系如下图:public class ReentrantLock implements Lock, java原创 2022-01-18 16:12:49 · 292 阅读 · 0 评论 -
JUC:AQS
AQS1 介绍什么事JUC? Java 并发包 java.util.concurrent。什么是AQS?全称:AbstractQueuedSynchronizer,他是一个抽象类,也是后面介绍的并发包的基础工具类,实现了ReentrantLock,CountDownLatch,Semaphore,FutureTask的基础。为什么要写AQS 因为CAS只能对内存中的某个值进行无锁同步操作,但是无法对某个对象进行无锁同步操作。AQS就是为了解决这个问题而被写出来的。2 源码(独占模式)源码位置:原创 2022-01-18 16:11:04 · 111 阅读 · 0 评论 -
CAS原理
CAS1 为什么要写CAS有时操作者不希望让操作系统那么“悲观”,每次都使用同步原语对共享资源进行资源锁定,而是希望让线程反复“乐观”的尝试获取共享资源,如果空闲那么是用,如果被占用,则继续尝试。CAS就这样应运而生了。2 实现原理2.1 实现资源Z设置了一个值假设叫Zp,Zp为0代表资源空闲,1代表资源被占用。A,B两个线程发现Zp为0,则都去争抢这个资源,A运气好抢到了这个资源,将Zp改为1,B也不会放弃,会不断回来看看Zp变为0了没。在A获得时间片时,它将oldValue(读到的资源对象的状原创 2022-01-18 16:07:40 · 495 阅读 · 0 评论 -
synchronized
synchronized 原理1 synchronized特点1.1 原子性操作不可中断,要么执行不被中断,要么不执行。1.2 可见性多线程访问同一资源时,该资源状态信息对其他线程可见。1.3 有序性java允许编辑器和处理器对指令进行重排,而synchronied和volatile都有有序性,即线程执行同步代码是分先后顺序的。1.4 可重入性synchronized和ReentrantLock都是可重入锁,即一个线程拥有了锁仍然可以重复申请自己持有的锁。2 synchronized 用原创 2022-01-18 16:04:21 · 161 阅读 · 0 评论