美文网首页
线程池--默认拒绝策略

线程池--默认拒绝策略

作者: Ngcc | 来源:发表于2018-02-07 10:01 被阅读0次

    本文适合java初学者。

    当任务提交后,被拒绝策略有多种,例如CallerRunsPolicy,AbortPolicy,DiscardPolicy,DiscardOldestPolicy等等

    本文我们看下,默认策略的使用方式。(一般是捕获异常)

    默认拒绝策略JDK8.0:

        /**

        * The default rejected execution handler

        */

        private static final RejectedExecutionHandler defaultHandler =

            new AbortPolicy();

    示例

    public static void main(String[] args) {

        ThreadPoolExecutor executor = new ThreadPoolExecutor(1, 1,

                0L, TimeUnit.MILLISECONDS,

                new LinkedBlockingQueue(1));

        for(int i = 0;i<10;i++){

            final int finalI = i;

            try {

                executor.submit(new Runnable() {

                    @Override

                    public void run() {

                        System.out.println(String.format("处理第%s个任务", finalI));

                    }

                });

            }catch (Exception e){

                System.out.println(finalI+"异常了"+ Jackson.toJson(executor));

            }

        }

    }

    结果:

    处理第0个任务

    处理第1个任务

    2异常了{"largestPoolSize":1,"completedTaskCount":2,"threadFactory":{},"corePoolSize":1,"maximumPoolSize":1,"activeCount":0,"poolSize":1,"queue":[],"rejectedExecutionHandler":{},"taskCount":2,"shutdown":false,"terminated":false,"terminating":false}

    4异常了{"largestPoolSize":1,"completedTaskCount":2,"threadFactory":{},"corePoolSize":1,"maximumPoolSize":1,"activeCount":0,"poolSize":1,"queue":[{"done":false,"cancelled":false}],"rejectedExecutionHandler":{},"taskCount":3,"shutdown":false,"terminated":false,"terminating":false}

    5异常了{"largestPoolSize":1,"completedTaskCount":2,"threadFactory":{},"corePoolSize":1,"maximumPoolSize":1,"activeCount":0,"poolSize":1,"queue":[{"done":false,"cancelled":false}],"rejectedExecutionHandler":{},"taskCount":3,"shutdown":false,"terminated":false,"terminating":false}

    6异常了{"largestPoolSize":1,"completedTaskCount":2,"threadFactory":{},"corePoolSize":1,"maximumPoolSize":1,"activeCount":0,"poolSize":1,"queue":[{"done":false,"cancelled":false}],"rejectedExecutionHandler":{},"taskCount":3,"shutdown":false,"terminated":false,"terminating":false}

    7异常了{"largestPoolSize":1,"completedTaskCount":2,"threadFactory":{},"corePoolSize":1,"maximumPoolSize":1,"activeCount":0,"poolSize":1,"queue":[{"done":false,"cancelled":false}],"rejectedExecutionHandler":{},"taskCount":3,"shutdown":false,"terminated":false,"terminating":false}

    8异常了{"largestPoolSize":1,"completedTaskCount":2,"threadFactory":{},"corePoolSize":1,"maximumPoolSize":1,"activeCount":0,"poolSize":1,"queue":[{"done":false,"cancelled":false}],"rejectedExecutionHandler":{},"taskCount":3,"shutdown":false,"terminated":false,"terminating":false}

    9异常了{"largestPoolSize":1,"completedTaskCount":2,"threadFactory":{},"corePoolSize":1,"maximumPoolSize":1,"activeCount":0,"poolSize":1,"queue":[{"done":false,"cancelled":false}],"rejectedExecutionHandler":{},"taskCount":3,"shutdown":false,"terminated":false,"terminating":false}

    处理第3个任务

    相关文章

      网友评论

          本文标题:线程池--默认拒绝策略

          本文链接:https://www.haomeiwen.com/subject/gmlozxtx.html