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: 直接丢弃任务,不予任何处理,如果允许任务丢失,这是最好的一个解决方案
|