- 博客(17)
- 资源 (12)
- 收藏
- 关注
原创 Java Review - Java进程内部的消息中间件_Event Bus设计模式
文章目录概述概述在工作中,我们都会使用到MQ 比如 Apache Kafka等,某subscriber在消息中间件上注册了某个topic(主题),当有消息发送到了该topic上之后,注册在该topic上的所有subscriber都将会收到消息 。消息中间件提供了系统之间的异步处理机制。 主业务完成后即可向用户返回成功的通知,然后提交各种消息至消息中间件,这样注册在消息中间件的其他系统就可以顺利地接收通知了,然后执行各自的业务逻辑。消息中间件主要用于解决进程之间消息异步处理的解决方案,这里,我们
2021-12-19 08:59:43 32228 3
原创 Java Review - 并发编程_ 信号量Semaphore原理&源码剖析
文章目录概述小Demo概述Semaphore信号量也是Java中的一个同步器,与CountDownLatch和CycleBarrier不同的是,它内部的计数器是递增的,并且在一开始初始化Semaphore时可以指定一个初始值,但是并不需要知道需要同步的线程个数,而是在需要同步的地方调用acquire方法时指定需要同步的线程个数。小Demo...
2021-12-12 15:59:09 31217 1
原创 Java Review - 并发编程_ 回环屏障CyclicBarrier原理&源码剖析
文章目录PrePreJava Review - 并发编程_ CountDownLatch原理&源码剖析介绍的CountDownLatch在解决多个线程同步方面相对于调用线程的join方法已经有了不少优化,但是CountDownLatch的计数器是一次性的,也就是等到计数器值变为0后,再调用CountDownLatch的await和countdown方法都会立刻返回,这就起不到线程同步的效果了。所以为了满足计数器可以重置的需要,JDK开发组提供了CyclicBarrier类,并且Cyclic
2021-12-12 11:02:30 30985
原创 Java Review - 并发编程_ CountDownLatch原理&源码剖析
文章目录Pre小DemoPre每日一博 - CountDownLatch使用场景分析以及源码分析在日常开发中经常会遇到需要在主线程中开启多个线程去并行执行任务,并且主线程需要等待所有子线程执行完毕后再进行汇总的场景。在CountDownLatch出现之前一般都使用线程的join()方法来实现这一点,但是join方法不够灵活,不能够满足不同场景的需要,所以JDK开发组提供了CountDownLatch这个类,使用CountDownLatch会更优雅.小Demo...
2021-12-11 19:43:44 30918
原创 Java Review - 并发编程_ScheduledThreadPoolExecutor原理&源码剖析
文章目录概述类结构概述Java Review - 并发编程_ThreadPoolExecutor原理&源码剖析 我们复习了Java中线程池ThreadPoolExecutor的原理,ThreadPoolExecutor只是Executors工具类的一部分功能。下面来介绍另外一部分功能,也就是ScheduledThreadPoolExecutor的实现,这是一个可以在指定一定延迟时间后或者定时进行任务调度执行的线程池。类结构Executors其实是个工具类,它提供了好多静态方法,
2021-12-11 14:46:35 30634
原创 Java Review - 并发编程_ThreadPoolExecutor原理&源码剖析
文章目录线程池主要解决两个问题线程池主要解决两个问题一是当执行大量异步任务时线程池能够提供较好的性能。在不使用线程池时,每当需要执行异步任务时直接new一个线程来运行,而线程的创建和销毁是需要开销的。线程池里面的线程是可复用的,不需要每次执行异步任务时都重新创建和销毁线程。二是线程池提供了一种资源限制和管理的手段,比如可以限制线程的个数,动态新增线程等。每个ThreadPoolExecutor也保留了一些基本的统计数据,比如当前线程池完成的任务数目等。另外,线程池也提供了许多可调参数
2021-12-11 09:34:12 31177
原创 Java Review - 并发编程_DelayQueue原理&源码剖析
文章目录概述类图结构概述DelayQueue并发队列是一个无界阻塞延迟队列,队列中的每个元素都有个过期时间,当从队列获取元素时,只有过期元素才会出队列。队列头元素是最快要过期的元素。类图结构...
2021-12-05 23:48:52 30571
原创 Java Review - 并发编程_PriorityBlockingQueue原理&源码剖析
文章目录概述类图结构概述PriorityBlockingQueue是带优先级的无界阻塞队列,每次出队都返回优先级最高或者最低的元素。其内部是使用平衡二叉树堆实现的,所以直接遍历队列元素不保证有序。默认使用对象的compareTo方法提供比较规则,如果你需要自定义比较规则则可以自定义comparators。类图结构...
2021-12-05 23:44:47 30030
原创 Java Review - 并发编程_ArrayBlockingQueue原理&源码剖析
文章目录概述类图结构概述Java Review - 并发编程_LinkedBlockingQueue原理&源码剖析介绍了使用有界链表方式实现的阻塞队列LinkedBlockingQueue,这里我们继续来研究使用有界数组方式实现的阻塞队列ArrayBlockingQueue的原理。类图结构...
2021-12-05 19:17:27 30034
原创 Java Review - 并发编程_LinkedBlockingQueue原理&源码剖析
文章目录概述类图结构主要方法offer操作概述Java Review - 并发编程_ConcurrentLinkedQueue原理&源码剖析介绍了使用CAS算法实现的非阻塞队列ConcurrentLinkedQueue,下面我们来介绍使用独占锁实现的阻塞队列LinkedBlockingQueue类图结构首先看一下LinkedBlockingQueue的类图结构,以便从全局对LinkedBlockingQueue有个直观的了解主要方法offer操作...
2021-12-05 15:37:37 29832
原创 Java Review - 并发编程_StampedLock锁探究
@[toc]概述StampedLock是并发包里面JDK8版本新增的一个锁,该锁提供了三种模式的读写控制, 当调用获取锁的系列函数时,会返回一个long 型的变量,我们称之为戳记(stamp),这个戳记代表了锁的状态。其中try系列获取锁的函数,当...
2021-12-05 13:22:26 27348
原创 Java Review - 并发编程_ConcurrentLinkedQueue原理&源码剖析
文章目录概述ConcurrentLinkedQueue概述JDK中提供了一系列场景的并发安全队列。总的来说,按照实现方式的不同可分为阻塞队列和非阻塞队列,阻塞队列使用锁实现而非阻塞队列则使用CAS非阻塞算法实现ConcurrentLinkedQueueConcurrentLinkedQueue是线程安全的无界非阻塞队列,其底层数据结构使用单向链表实现,对于入队和出队操作使用CAS来实现线程安全。...
2021-12-05 08:48:21 27306
原创 Java Review - 并发编程_抽象同步队列AQS
文章目录概述 AQS——锁的底层支持概述 AQS——锁的底层支持AbstractQueuedSynchronizer抽象同步队列简称AQS,它是实现同步器的基础组件,并发包中锁的底层就是使用AQS实现的。另外,大多数开发者可能永远不会直接使用AQS,但是知道其原理对于架构设计还是很有帮助的。AQS是一个FIFO的双向队列,其内部通过节点head和tail记录队首和队尾元素,队列元素的类型为Node。其中Node中的thread变量用来存放进入AQS队列里面的线程;Node节点内部的SH
2021-12-05 00:58:14 27030
原创 Java Review - 并发编程_读写锁ReentrantReadWriteLock的原理&源码剖析
文章目录ReentrantLock VS ReentrantReadWriteLock类图结构ReentrantLock VS ReentrantReadWriteLock解决线程安全问题使用ReentrantLock就可以,但是ReentrantLock是独占锁,某时只有一个线程可以获取该锁,而实际中会有写少读多的场景,显然ReentrantLock满足不了这个需求,所以ReentrantReadWriteLock应运而生。ReentrantReadWriteLock采用读写分离的策略,允许多
2021-12-04 16:46:57 26903
原创 Java Review - 并发编程_独占锁ReentrantLock原理&源码剖析
文章目录概述概述ReentrantLock是可重入的独占锁,同时只能有一个线程可以获取该锁,其他获取该锁的线程会被阻塞而被放入该锁的AQS阻塞队列里面。底层基于AQS实现,ReentrantLock的lock等方法,委托给其依赖sync的lock方法从类图可以看出,ReentrantLock最终还是使用AQS来实现的,并且根据参数来决定其内部是一个公平还是非公平锁,默认是非公平锁。 /** * Creates an instance of {@code ReentrantLo
2021-12-04 11:44:02 26686
原创 Java Review - 并发编程_LockSupport
文章目录概述主要方法概述位于rt.jar包的java.util.concurrent.locks目录中, 主要作用是挂起和唤醒线程,该工具类是创建锁和其他同步类的基础。LockSupport类与每个使用它的线程都会关联一个许可证,在默认情况下调用LockSupport类的方法的线程是不持有许可证的。主要方法...
2021-12-01 20:18:27 26405
原创 Java Review - 并发编程_并发List_CopyOnWriteArrayList源码剖析
文章目录概述概述并发包中的并发List只有CopyOnWriteArrayList。CopyOnWriteArrayList是一个线程安全的ArrayList,对其进行的修改操作都是在底层的一个复制的数组(快照)上进行的,也就是使用了写时复制策略。...
2021-12-01 00:16:15 26026
X86-NFS rpm包
2020-11-24
中标龙芯-MIPS- NFS rpm包
2020-11-24
mybatisSource.zip
2020-06-14
apache-tomcat-8.5.50-src.zip
2020-06-02
「Tomcat源码剖析」.pdf
2020-06-01
Jest-5.3.4.zip
2020-01-19
Spring4CachingAnnotationsExample
2017-10-04
Java反编译工具
2015-06-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人