Σ( ° △ °** | **) |
从零开始
interceptor 的设计可以学学。当时看到这个就莫名想到 C# 的多播委托和事件
并发
AbstractQueuedSynchronizer 使用和源码分析
刚刚接触并发的时候总是喜欢用阻塞队列处理问题不太喜欢使用其他工具,等到读到这篇文章时就很明了了——AQS 的核心是一个线程等待队列,采用的是一个先进先出 FIFO 队列。简单地说并发工具的”基类”就是一个队列,因此喜欢使用阻塞队列也是有原因的【大雾
Tips:并发工具不是直接继承 AbstractQueuedSynchronizer 这个抽象类,而是有一个内部类继承它,外层的类只是对内部类方法进行封装。如果厌倦了接口→抽象类→实现类这种一条线继承的设计思路,这种设计可以借鉴。
ConcurrentBag in C# - Introduction and Examples
ConcurrentBag 的设计比较有趣,它适合提升消费者/生产者双重身份的线程的性能。举例说就是假设有两个线程 T1/T2,T1 生产 P1/P2/P3/P4,T2 生产 P5/P6,紧接着T1开始消费所有产出,它会首先消费P1/P2/P3/P4,也就是说它会首先消费它自己的产出。
文末的总结图实用度max
【追光者系列】HikariCP 源码分析之 ConcurrentBag
虽然题目只是提到 ConcurrentBag,实际上文中提及了 CopyOnWriteArrayList、SynchronousQueue、ConcurrentBag 三种并发集合。
源码
一般系统都需要类似 xxxDefinition 的抽象定义类,可以参考 Spring BeanDefinition 的实现。