码迷,mamicode.com
首页 > 其他好文 > 详细

开发中的异常收集(持续更新中...)

时间:2017-05-02 12:05:02      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:epo   repo   private   his   线程   car   cut   exception   tin   

java.lang.ArithmeticException: divide by zero

算数异常,除数为0

 java.util.concurrent.RejectedExecutionException: pool=128/128, queue=10/10

AsyncTask引发的异常,线程池已满拒绝过剩task

默认的线程池会引发这个异常

    AsyncTask.class
...
 public static final Executor THREAD_POOL_EXECUTOR
            = new ThreadPoolExecutor(CORE_POOL_SIZE, MAXIMUM_POOL_SIZE, KEEP_ALIVE,
                    TimeUnit.SECONDS, sPoolWorkQueue, sThreadFactory);


...
public ThreadPoolExecutor(int corePoolSize,
                              int maximumPoolSize,
                              long keepAliveTime,
                              TimeUnit unit,
                              BlockingQueue<Runnable> workQueue) {
        this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,
             Executors.defaultThreadFactory(), defaultHandler);
    }
...
    private static final RejectedExecutionHandler defaultHandler =
        new AbortPolicy();
...
    public static class AbortPolicy implements RejectedExecutionHandler {
        /**
         * Creates an {@code AbortPolicy}.
         */
        public AbortPolicy() { }

        /**
         * 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());
        }
    }
...

  解决办法:自定义 RejectedExecutionHandler或者调用其他实现类

  public static final Executor THREAD_POOL_EXECUTOR
            = new ThreadPoolExecutor(CORE_POOL_SIZE, MAXIMUM_POOL_SIZE, KEEP_ALIVE,
            TimeUnit.SECONDS, sPoolWorkQueue, sThreadFactory, new ThreadPoolExecutor.DiscardOldestPolicy());

  

 

开发中的异常收集(持续更新中...)

标签:epo   repo   private   his   线程   car   cut   exception   tin   

原文地址:http://www.cnblogs.com/wjw334/p/6795015.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!