调整线程池参数,无法较好的平衡;
采用动态线程池思想,继承ThreadPoolExecutor类,借助其提供的接口,实现平滑修改线程池参数;以及线程执行前后的afterExecute、beforeExcute实现线程池运行监控;
@Override
protected void beforeExecute(Thread t, Runnable r) {
// System.out.println("任务线程执行前");
// threadLocal.set(System.currentTimeMillis());
// threadLocal.remove();
// Worker线程执行任务之前会调用的方法;
// super.beforeExecute(t, r);
}
继承ThreadPoolExecutor类,自定义实现线程工厂(自定义线程名称)、自定义拒绝策略(方便跟踪任务)等;
public class MyThreadPoolExecutor extends ThreadPoolExecutor implements DisposableBean {
// 可以在ioc销毁bean对象时,关闭线程池
@Override
public void destroy() throws Exception {
// 调用父类的shutdown方法关闭线程池
}
}
进一步扩展:将项目中的线程池的创建和销毁都统一交给线程池管理对象,实现统一管理和监控;
***********持续更新