1.阻塞队列 体系结构
-Collection
-Queue
- BlockQueue
重要的实现类
1.ArrayBlockingQueue 底层是数组
2.LinkedBlockingQueue 底层是链表 :默认长度是 21 亿
3.SynchronousQueue 里边只能存放一个
2.线程池 核心类
Executor :线程池根
ExecutorService :重要接口
ThreadPoolExecutor :非常重要的类
3.常见的线程池操作
Executors.newFixedThreadPool(5) 指定大小
Executors.newSingleThreadExecutor() 只能一个线程
Executors.newCachedThreadPool() 忙不过来多个线程,忙的过来单个线程
4.线程池7大参数
corePoolSize : 线程池中常驻的核心线程数
maximumPoolSize :最大线程数:线程池中同时可以执行的最大线程数
workQueue: 阻塞队列
RejectedExecutionHandler:拒绝策略
ThreadFactory :默认工厂
keepAliveTime:多余的空闲线程的存活时间,当前线程池数量超过corePoolSize 时,当空闲时间达到keepAliveTime 值时,多余空闲线程会被销毁,直到只剩下corePoolSize 个线程为止
5.线程池的拒绝策略
RejectedExecutionHandler
AbortPolicy(默认):直接抛出RejectedExecutionException 异常阻止系统正常运行
CallerRunsPolicy:调用者运行一种调用机制,该策略不会抛出异常,而是将某些任务回退到调用者,从而降低流量
DiscardOldestPolicy:抛弃队列中等待最久的任务,然后把当前任务加入到队列再尝试提交任务
DiscardPolicy: 直接丢弃任务,不予任何处理,如果允许任务丢失,这是最好的一个解决方案 |
|