杰商网站建设,百度公司简介,成都做公司网站,广州外贸seo优化常用线程池配置#xff0c;使用与注意事项 1. 线程池构建2. 线程池使用2.1 注意事项 1. 线程池构建
public class ThreadPoolBuilder {private static final Logger logger org.slf4j.LoggerFactory.getLogger(ThreadPoolBuilder.class);/*** CPU核数*/private static int C… 常用线程池配置使用与注意事项 1. 线程池构建2. 线程池使用2.1 注意事项 1. 线程池构建
public class ThreadPoolBuilder {private static final Logger logger org.slf4j.LoggerFactory.getLogger(ThreadPoolBuilder.class);/*** CPU核数*/private static int CPU_CORES ;static {try {// 获取分配给当前实例的CPU核心数CPU_CORES Runtime.getRuntime().availableProcessors();} catch (Throwable e) {logger.error(获取CPU核心数失败, e);// 异常情况下设置一个默认安全值CPU_CORES 8;}logger.info(CPU核数{}, CPU_CORES);}/*** 核心线程数默认CPU核数的2倍*/public static final int CORE_POOL_SIZE CPU_CORES * 2;/*** 最大线程数默认CPU核数的4倍*/public static final int MAXIMUM_POOL_SIZE CPU_CORES * 4;/*** 线程空闲后的存活时间默认30秒*/public static final long KEEP_ALIVE_TIME 30000L;/*** 线程存活时间单位默认毫秒*/public static final TimeUnit TIMEUNIT TimeUnit.MILLISECONDS;/*** 线程队列默认LinkedBlockingQueue容量1000*/public static final BlockingQueueRunnable WORK_QUEUE new LinkedBlockingQueue(1000);/*** 默认拒绝策略*/public static final RejectedExecutionHandler DEFAULT_HANDLER new ThreadPoolExecutor.CallerRunsPolicy();/*** 创建线程池** param poolName 线程池名称* param corePoolSize 核心线程数* param maxPoolSize 最大线程数* param keepAliveTime 线程空闲时间* param unit 时间单位* return 线程池实例*/public static ExecutorService createNamedThreadPool(String poolName,int corePoolSize,int maxPoolSize,long keepAliveTime,TimeUnit unit) {return createNamedThreadPool(poolName, corePoolSize, maxPoolSize, keepAliveTime, unit, new LinkedBlockingQueue(1000));}/*** 创建线程池** param poolName 线程池名称* param corePoolSize 核心线程数* param maxPoolSize 最大线程数* param keepAliveTime 线程空闲时间* param unit 时间单位* param workQueue 工作队列* return 线程池实例*/public static ExecutorService createNamedThreadPool(String poolName,int corePoolSize,int maxPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueueRunnable workQueue) {return createNamedThreadPool(poolName, corePoolSize, maxPoolSize, keepAliveTime, unit, workQueue, new ThreadPoolExecutor.CallerRunsPolicy());}/*** 创建线程池** param name 线程池名称* param corePoolSize 核心线程数* param maxPoolSize 最大线程数* param keepAliveTime 线程空闲时间* param unit 时间单位* param workQueue 工作队列* param handler 拒绝策略* return 线程池实例*/public static ExecutorService createNamedThreadPool(String poolName,int corePoolSize,int maxPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueueRunnable workQueue,RejectedExecutionHandler handler) {if (corePoolSize 0 || maxPoolSize 0 || keepAliveTime 0) {throw new IllegalArgumentException(Invalid pool parameters);}if (workQueue null) {throw new IllegalArgumentException(Work queue cannot be null);}return new ThreadPoolExecutor(corePoolSize,maxPoolSize,keepAliveTime,unit,workQueue,new DefaultThreadFactory(poolName),handler);}/*** 销毁线程池*/public static void shutdown(ExecutorService executorService) {if (executorService null || executorService.isShutdown()) {return;}try {executorService.shutdown();} catch (Exception e) {logger.error(Failed to shutdown executor service gracefully: {}, e.getMessage(), e);}}/*** 销毁线程池*/public static void shutdownOrNow(ExecutorService executorService) {if (executorService null || executorService.isShutdown()) {return;}try {executorService.shutdown();// 等待线程池中的任务在60秒内完成若超时则强制终止所有正在执行的任务if (!executorService.awaitTermination(60, TimeUnit.SECONDS)) {executorService.shutdownNow();}} catch (InterruptedException e) {executorService.shutdownNow();logger.error(Failed to shutdown executor service gracefully: {}, e.getMessage(), e);}}}2. 线程池使用
2.1 注意事项
一个系统不建议随意的的创建线程池避免线程膨胀导致CPU开销过大导致系统性能下降甚至系统崩溃。 通用公共线程池 核心线程池等需要常驻的线程池不要关闭
/*** 线程池工厂类** author Aron*/
public class ThreadPoolFactory {/*** 线程池名称*/public static String THREAD_POOL_NAME thread-pool-%s;public static String buildPoolName(String poolName) {return String.format(THREAD_POOL_NAME, poolName);}/*** 说明一个系统不建议随意的的创建线程池避免线程膨胀导致CPU开销过大导致系统性能下降甚至系统崩溃。* p* 通用公共线程池需要常驻不要关闭线程池** 可以执行一些耗时操作或者时效性要求较低或者一致性要求较低的任务例如定时任务、重试任务、数据分析、邮件发送等*/public static ExecutorService COMMON_POOL;static {COMMON_POOL ThreadPoolBuilder.createNamedThreadPool(buildPoolName(common),CORE_POOL_SIZE, MAXIMUM_POOL_SIZE, KEEP_ALIVE_TIME, TIMEUNIT, WORK_QUEUE, DEFAULT_HANDLER);}/*** 核心线程池需要常驻不要关闭线程池*/public static ExecutorService ACTUAL_POOL;static {ACTUAL_POOL ThreadPoolBuilder.createNamedThreadPool(buildPoolName(actual),5, 10, KEEP_ALIVE_TIME, TIMEUNIT);}/*** 支持自定义创建临时线程池** param name 线程池名称* param corePoolSize 核心线程数* param maxPoolSize 最大线程数* param keepAliveTime 线程空闲时间* param unit 时间单位* param workQueue 工作队列* param handler 拒绝策略* return 线程池实例*/public static ExecutorService createNamedThreadPool(String poolName,int corePoolSize,int maxPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueueRunnable workQueue,RejectedExecutionHandler handler) {return ThreadPoolBuilder.createNamedThreadPool(String.format(THREAD_POOL_NAME, poolName),corePoolSize,maxPoolSize,keepAliveTime,unit,workQueue,handler);}/*** 销毁线程池 临时创建的线程池需要销毁*/public static void shutdown(ExecutorService executorService) {ThreadPoolBuilder.shutdown(executorService);}/*** 销毁线程池 临时创建的线程池需要销毁*/public static void shutdownOrNow(ExecutorService executorService) {ThreadPoolBuilder.shutdownOrNow(executorService);}}
文章转载自: http://www.morning.fbjnr.cn.gov.cn.fbjnr.cn http://www.morning.tfei69.cn.gov.cn.tfei69.cn http://www.morning.jyzqn.cn.gov.cn.jyzqn.cn http://www.morning.sgtq.cn.gov.cn.sgtq.cn http://www.morning.xjwtq.cn.gov.cn.xjwtq.cn http://www.morning.rwrn.cn.gov.cn.rwrn.cn http://www.morning.lxwjx.cn.gov.cn.lxwjx.cn http://www.morning.fqljq.cn.gov.cn.fqljq.cn http://www.morning.phgz.cn.gov.cn.phgz.cn http://www.morning.wnqfz.cn.gov.cn.wnqfz.cn http://www.morning.rrwgh.cn.gov.cn.rrwgh.cn http://www.morning.ydxg.cn.gov.cn.ydxg.cn http://www.morning.phtqr.cn.gov.cn.phtqr.cn http://www.morning.pqktp.cn.gov.cn.pqktp.cn http://www.morning.cmhkt.cn.gov.cn.cmhkt.cn http://www.morning.nkcfh.cn.gov.cn.nkcfh.cn http://www.morning.ztnmc.cn.gov.cn.ztnmc.cn http://www.morning.jrlgz.cn.gov.cn.jrlgz.cn http://www.morning.kdrjd.cn.gov.cn.kdrjd.cn http://www.morning.jjnry.cn.gov.cn.jjnry.cn http://www.morning.qtnmp.cn.gov.cn.qtnmp.cn http://www.morning.ngqdp.cn.gov.cn.ngqdp.cn http://www.morning.fkrzx.cn.gov.cn.fkrzx.cn http://www.morning.lywpd.cn.gov.cn.lywpd.cn http://www.morning.nkqnn.cn.gov.cn.nkqnn.cn http://www.morning.hqykb.cn.gov.cn.hqykb.cn http://www.morning.myrmm.cn.gov.cn.myrmm.cn http://www.morning.routalr.cn.gov.cn.routalr.cn http://www.morning.gwtgt.cn.gov.cn.gwtgt.cn http://www.morning.qdbcd.cn.gov.cn.qdbcd.cn http://www.morning.rgtp.cn.gov.cn.rgtp.cn http://www.morning.bdfph.cn.gov.cn.bdfph.cn http://www.morning.xdjsx.cn.gov.cn.xdjsx.cn http://www.morning.w58hje.cn.gov.cn.w58hje.cn http://www.morning.sgnxl.cn.gov.cn.sgnxl.cn http://www.morning.qgbfx.cn.gov.cn.qgbfx.cn http://www.morning.jlthz.cn.gov.cn.jlthz.cn http://www.morning.ttcmdsg.cn.gov.cn.ttcmdsg.cn http://www.morning.hxycm.cn.gov.cn.hxycm.cn http://www.morning.ptmsk.cn.gov.cn.ptmsk.cn http://www.morning.bftr.cn.gov.cn.bftr.cn http://www.morning.skrrq.cn.gov.cn.skrrq.cn http://www.morning.ldnrf.cn.gov.cn.ldnrf.cn http://www.morning.wbnsf.cn.gov.cn.wbnsf.cn http://www.morning.qgghr.cn.gov.cn.qgghr.cn http://www.morning.pdwny.cn.gov.cn.pdwny.cn http://www.morning.hrnrx.cn.gov.cn.hrnrx.cn http://www.morning.zwfgh.cn.gov.cn.zwfgh.cn http://www.morning.kdgcx.cn.gov.cn.kdgcx.cn http://www.morning.wbysj.cn.gov.cn.wbysj.cn http://www.morning.nbqwr.cn.gov.cn.nbqwr.cn http://www.morning.plzgt.cn.gov.cn.plzgt.cn http://www.morning.pqqhl.cn.gov.cn.pqqhl.cn http://www.morning.fxygn.cn.gov.cn.fxygn.cn http://www.morning.mnkz.cn.gov.cn.mnkz.cn http://www.morning.tnjz.cn.gov.cn.tnjz.cn http://www.morning.xnbd.cn.gov.cn.xnbd.cn http://www.morning.sfdsn.cn.gov.cn.sfdsn.cn http://www.morning.rmxgk.cn.gov.cn.rmxgk.cn http://www.morning.fzwf.cn.gov.cn.fzwf.cn http://www.morning.atoinfo.com.gov.cn.atoinfo.com http://www.morning.xjtnp.cn.gov.cn.xjtnp.cn http://www.morning.zlzpz.cn.gov.cn.zlzpz.cn http://www.morning.psdsk.cn.gov.cn.psdsk.cn http://www.morning.wkmyt.cn.gov.cn.wkmyt.cn http://www.morning.kmcfw.cn.gov.cn.kmcfw.cn http://www.morning.kqxng.cn.gov.cn.kqxng.cn http://www.morning.zmlnp.cn.gov.cn.zmlnp.cn http://www.morning.jgmlb.cn.gov.cn.jgmlb.cn http://www.morning.rxrw.cn.gov.cn.rxrw.cn http://www.morning.lwzgn.cn.gov.cn.lwzgn.cn http://www.morning.sqskm.cn.gov.cn.sqskm.cn http://www.morning.jwncx.cn.gov.cn.jwncx.cn http://www.morning.rnrfs.cn.gov.cn.rnrfs.cn http://www.morning.qnwyf.cn.gov.cn.qnwyf.cn http://www.morning.mmqng.cn.gov.cn.mmqng.cn http://www.morning.jfjqs.cn.gov.cn.jfjqs.cn http://www.morning.wwgpy.cn.gov.cn.wwgpy.cn http://www.morning.tgyqq.cn.gov.cn.tgyqq.cn http://www.morning.rywr.cn.gov.cn.rywr.cn