JUC
wj-1024
【日积跬步】
展开
-
【JUC】线程池-ThreadPoolExecutor源码解析
1.线程池能做什么?是控制运行的线程的数量处理过程中将任务加入队列,然后在线程创建后启动这些任务如果先生超过了最大数量,超出的数量的线程排队等候等其他线程执行完毕,再从队列中取出任务来执行.简单来说,线程池可以管理线程,进行线程复用和控制最大并发数。2.线程池优点?第一:降低资源消耗.通过重复利用自己创建的线程降低线程创建和销毁造成的消耗.第二: 提高响应速度.当任务到...原创 2019-12-26 18:27:57 · 2511 阅读 · 0 评论 -
【JUC】Callable底层源码分析
1.线程创建我们创建线程一般有以下几种方式:1,承Thread,重写run方法2,实现Runnable接口,重新run方法3,实现Callable接口并重写call方法。我们今天聊的就是第三种。实现Callable接口并重写call方法,与 Runnable 相比Callable又有些不同:1, Callable 可以在任务结束的时候提供一个返回值,Runnabl...原创 2019-12-25 13:51:48 · 2979 阅读 · 0 评论 -
【锁】 synchronized与Lock的区别
1. 原始构成synchronized是关键字,属于JVM层面。Lock是具体类,是api层面。1.1 synchronized底层原理今天就用一个最简单的一个Demo来聊:/** * idea配置javap -c工具 * 右键查看字节码指令 * * @author wangjie * @version V1.0 * @date 2019/12/24 */pu...原创 2019-12-24 16:33:38 · 2398 阅读 · 0 评论 -
【JUC】阻塞队列
1.什么是阻塞队列?顾名思义,首先它是个队列:当阻塞队列是空时,从队列中获取元素的操作将会被阻塞。当阻塞队列是满时,往队列中添加元素的操作将会被阻塞。同样,试图往已满的阻塞队列中添加新的线程同样也会被阻塞,直到其他线程从队列中移除一个或者多个元素或者全清空队列后使队列重新变得空闲起来并后续新增。2.有什么用?在多线程领域:所谓阻塞,在某些情况下会挂起线程(即线程阻塞),一旦条件...原创 2019-12-24 14:50:25 · 2267 阅读 · 0 评论 -
【锁】读写锁--ReentrantReadWriteLock源码分析
1.什么读写锁–ReentrantReadWriteLock?撸源码前,可先看:【锁】公平锁/非公平锁/可重入锁/递归锁/自旋锁/独占锁/共享锁/读写锁2.开撸2.1 类图先从类图开始,一步一步看。idea找到依赖的jdk下面rt.jar里面JUC包里面的ReentrantReadWriteLock右键如图:打开类图:我们可以看到ReentrantLock里面有一个Sync抽象...原创 2019-12-23 11:04:13 · 2376 阅读 · 0 评论 -
【JUC】CountDownLatch源码分析
1.什么是CountDownLatch之前写了一篇关于JUC包里关于并发编程工具类的笔记,但过后总感觉不太舒服,不通透,所以,这次就想着先把整个CountDownLatch源码撸一遍。至于CountDownLatch是什么,撸代码前,可先看:【JUC】CountDownLatch/CyclicBarrier/Semaphore2.开撸2.1 类图先从类图开始,一步一步看。idea找到...原创 2019-12-21 23:58:01 · 2415 阅读 · 0 评论 -
【锁】【JUC】可重入锁/AQS队列--ReentrantLock源码分析
1.重入锁/AQS队列之前有写过一篇关于锁的笔记:【锁】公平锁/非公平锁/可重入锁/递归锁/自旋锁/独占锁/共享锁/读写锁里面关于重入锁,特别AQS队列并没有提到,故借学习ReentrantLock源码几下这篇笔记。2. ReentrantLock源码分析2.1 类图今天啰嗦一些,我们一步一步看:idea找到依赖的jdk下面rt.jar里面JUC包里面的ReentrantLock右...原创 2019-12-20 23:29:37 · 2943 阅读 · 0 评论 -
【JUC】CountDownLatch/CyclicBarrier/Semaphore
1.CountDownLatchCountDown减法计数,Latch门闩的意思让一些线程阻塞直到另外一些完成后才被唤醒。举例:1,值日生要等所有人走后,才能打扫卫生关灯锁门Demo:/** * 值日生要等所有人走后,才能打扫卫生关灯锁门 * * @author wangjie * @version V1.0 * @date 2019/12/19 */publ...原创 2019-12-19 17:18:11 · 2419 阅读 · 0 评论 -
【JUC】CAS中的ABA问题和解决方案
1. CAS介绍CAS:Compare and Swap-----比较并交换。java.util.concurrent包中借助CAS实现了区别于synchronized同步锁的一种乐观锁。其原理是CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。传送门:【JUC】 Java中的CAS2.CAS缺点ABA问题...原创 2019-12-16 10:45:24 · 3313 阅读 · 0 评论 -
【JUC】 Java中的CAS
1.什么是CAS?CAS:Conmpare And Swap ---- 比较和交换在计算机科学中,比较和交换(Conmpare And Swap)是用于实现多线程同步的原子指令。 它将内存位置的内容与给定值进行比较,只有在相同的情况下,将该内存位置的内容修改为新的给定值。—维基百科2.Java中的CASJava中,在JDK 5之前Java语言是靠synchronized关键字保证同步...原创 2019-12-15 19:15:07 · 2603 阅读 · 0 评论