线程池
线程池中有哪些常见的阻塞队列?
workQueue-当没有空闲核心线程时,新来任务会加入到此队列排队,队列满会创建救急线程执行任务 1. ArrayBlockingQueue: 基于数组结构的有界阻塞队列,FIFO 2. LinkedBlockingQueue: 基于链表结构的有界阻塞队列,FIFO 3. DelayedWorkQueue:是一个优先级队列,它可以保证每次出队的任务都是当前队列中执行时间最靠前的。 4. SynchronousQueue:不存储元素的阻塞队列,每个插入操作都必须等待一个移出操作。 ArrayBlockingQueue的LinkedBlockingQueue区别 ❒ LinkedBlockingQueue ✔ 默认无界,支持有界 ✔ 底层是链表 ✔ 是懒惰的,创建节点的时候添加数据 ✔ 入队会生成新 Node ✔ 两把锁(头尾) ❒ ArrayBlockingQueue ✔ 强制有界 ✔ 底层是数组 ✔ 提前初始化 Node 数组 ✔ Node需要是提前创建好的 ✔ 一把锁
1. ArrayBlockingQueue: 基于数组结构的有界阻塞队列,FIFO 2. LinkedBlockingQueue: 基于链表结构的有界阻塞队列,FIFO