线程池参数配置
记录线程池参数配置参考,以及配置的理论原理以及思路
LinkedBlockingQueue(链表结构的阻塞队列)
LinkedBlockingQueue是java.util.concurrent包中的一个类,它实现了BlockingQueue接口,是一个基于链表结构的阻塞队列,按FIFO(先进先出)排序元素,也是一种典型的生产者和消费者模型的阻塞队列。
DelayQueue(无界阻塞队列)
DelayQueue是Java并发包java.util.concurrent中的一个类,它实现了BlockingQueue接口。这是一个无界阻塞队列,用于放置实现了Delayed接口的对象,其中的对象只能在其到期时才能从队列中取走。
BlockingQueue(阻塞队列)
BlockingQueue是java.util.concurrent包下的一个接口,它是Queue接口的一个子接口。相比于普通的Queue,BlockingQueue的主要特性是,当试图向满的队列中添加元素或从空的队列中获取元素时,队列会阻塞插入/获取操作。这两种操作使得BlockingQueue适合用于生产者-消费者模型,在多线程环境中处理数据共享问题。
ArrayBlockingQueue(有界阻塞队列)
ArrayBlockingQueue 是 java.util.concurrent 包下的一个类,它是 BlockingQueue 接口的一个实现。这是一个由数组支持的有界阻塞队列。
队列按照 FIFO (先进先出) 的规则对元素进行排序,队列的头部是在队列中存在时间最长的元素。新的元素插入到队列的尾部,队列检索操作会获取位于队列头部的元素。
ReentrantReadWriteLock(读写锁)
ReentrantReadWriteLock是一个读写锁,它内部维护了两个锁:ReadLock和WriteLock。ReadLock用于只读操作,WriteLock用于写操作。 如果没有写操作,读锁是可以被多个线程同时持有的,即写锁是独占的,读锁是共享的。
StampedLock(读写锁)
StampedLock 是 Java 8 引入的一个新的读写锁,其设计目标是为了解决 ReentrantReadWriteLock 的一些性能问题,提供了乐观读锁的机制。
ReentrantLock(独占锁)
ReentrantLock 是Java中的一个工具类,位于 java.util.concurrent.locks 包下,是一种可重入的互斥锁,是 Lock
接口的一个实现。ReentrantLock
是由java提供的一种能够进行显示同步操作的锁,和synchronized不同的是,它是通过代码的方式来控制锁的获取和释放。
AQS
AQS(AbstractQueuedSynchronizer)是 Java 并发包中的一个抽象类,用于实现构建同步器的基础框架。它是实现锁、信号量和其他同步器的关键组件。AQS
提供了一套底层的同步机制,供开发者基于其进行扩展和实现各种高级同步器。