java 线程池线程忙碌且阻塞队列也满了时给一个拒接的详细报告详解编程语言

线程池线程忙碌且阻塞队列也满了时给一个拒接的详细报告。下面是一个自定义的终止策略类,继承了ThreadPoolExecutor.AbortPolicy类并覆盖了rejectedExecution方法把当前线程及线程池的状态给做了一个详细的报告。

默认抛出的异常消息比较简单:

        /** 
         * Always throws RejectedExecutionException. 
         * 
         * @param r the runnable task requested to be executed 
         * @param e the executor attempting to execute this task 
         * @throws RejectedExecutionException always 
         */ 
        public void rejectedExecution(Runnable r, ThreadPoolExecutor e) { 
            throw new RejectedExecutionException("Task " + r.toString() + 
                                                 " rejected from " + 
                                                 e.toString()); 
        }

下面是详细报告的代码:

public class AbortPolicyWithReport extends ThreadPoolExecutor.AbortPolicy { 
     
    protected static final Logger logger = LoggerFactory.getLogger(AbortPolicyWithReport.class); 
     
    private final String threadName; 
     
    private final URL url; 
     
    public AbortPolicyWithReport(String threadName, URL url) { 
        this.threadName = threadName; 
        this.url = url; 
    } 
     
    @Override 
    public void rejectedExecution(Runnable r, ThreadPoolExecutor e) { 
        String msg = String.format("Provider端线程池满!" + 
                " Thread Name: %s, Pool Size: %d (active: %d, core: %d, max: %d, largest: %d), Task: %d (completed: %d)," + 
                " Executor status:(isShutdown:%s, isTerminated:%s, isTerminating:%s), in %s://%s:%d!" , 
                threadName, e.getPoolSize(), e.getActiveCount(), e.getCorePoolSize(), e.getMaximumPoolSize(), e.getLargestPoolSize(), 
                e.getTaskCount(), e.getCompletedTaskCount(), e.isShutdown(), e.isTerminated(), e.isTerminating(), 
                url.getProtocol(), url.getIp(), url.getPort()); 
        logger.warn(msg); 
        throw new RejectedExecutionException(msg); 
    } 
 
}

 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/15919.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论