《java并发编程实践》---第8章 应用线程池
2021-04-22 06:27
标签:闲置 大于 card 拒绝策略 ror run time mina read 1、定制线程池的大小 1.1、线程池的合理大小 取决于 未来提交的任务类型 和 所部署的系统特征; 2、配置ThreadPoolExecutor 2.1、ThreadPoolExecutor 提供了 一些基本的Executor的实现: (由 工具类Executors 提供的newCachedThreadPool、newFixedThreadPool、newSingleThreadExecutor、newSingleThreadScheduledExecutor 返回) 2.2、如果 Executors提供的不能满足需求,可以通过ThreadPoolExecutor定制: 核心线程池大小: 即使没有任务执行,池的大小也等于核心池的大小,直到工作队列充满前,都不会增加新的线程; 最大线程数: 池内同时活动的线程的上限; 线程存活时间: 如果一个线程闲置的时间超过了存活时间,并且 池大小 大于 核心线程大小 ,线程池会终止该线程; 工作队列: ThreadPoolExecutor提供了BolckingQueue 持有等待执行的任务; 任务队列有3种:无限队列、有限队列、同步移交 拒绝策略: 当任务队列满后,新任务怎么处理? jdk提供了4种饱和策略: AbortPolicy: 默认策略,抛出RejectedExecutionException异常; CallerRunsPolicy: 既不会抛出异常、也不会丢弃任务,而是 将任务推回,由调用者执行; DiscardPolicy: 丢弃新任务; DiscardOldestPolicy: 丢弃最老的任务 3、扩展ThreadPoolExecutor 3.1、ThreadPoolExecutor提供了几个钩子函数: beforeExecute() 如果beforeExecute()抛出一个RuntimeException, 任务不会执行,afterExecute()不会执行; afterExecute() 任务 正常运行、 抛出异常, afterExecute()都会执行; 任务 抛出Error, afterExecute()不会执行; terminated() 线程池完成关闭后调用; 3.2、应用: 添加日志、时序、监视器、统计信息等; 《java并发编程实践》---第8章 应用线程池 标签:闲置 大于 card 拒绝策略 ror run time mina read 原文地址:https://www.cnblogs.com/anpeiyong/p/13278221.html
上一篇:滑动窗口算法-1
文章标题:《java并发编程实践》---第8章 应用线程池
文章链接:http://soscw.com/index.php/essay/77950.html