zoukankan      html  css  js  c++  java
  • 定时任务ScheduledExecutorService异常问题处理

    定时任务是比较常用的功能之一,最近就有需求使用到了这个东西。看下面这段代码:

    public class ScheduledErrorDemo {
    
        private static ScheduledExecutorService scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
    
        private static int count = 0;
    
        public static void main(String[] args){
            scheduledExecutorService.scheduleAtFixedRate(() -> {
                count ++;
                System.out.println(count + "--->" + new Date());
                if(count == 3){
                    throw new RuntimeException("任务出错了");
                }
            },2000,5000, TimeUnit.MILLISECONDS);
        }
    }
    

    执行之后:在这里插入图片描述
    再看下面这个代码:

    public class ScheduledDemo {
    
        private static ScheduledExecutorService scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
    
        private static int count = 0;
    
        public static void main(String[] args){
            scheduledExecutorService.scheduleAtFixedRate(() -> {
                count ++;
                System.out.println(count + "--->" + new Date());
                try {
                    if(count == 3){
                        throw new RuntimeException("任务出错了");
                    }
                } catch (Exception e) {
                    System.out.println("发生错误");
                }
            },2000,5000, TimeUnit.MILLISECONDS);
        }
    }
    
    

    然后看一下它的执行结果:
    在这里插入图片描述从上面两个程序中结果已经显而易见,对于定时线程ScheduledExecutorService的异常处理方式了,直接抛出来会导致线程一直抑制无法继续执行。这从方法签名的javadoc中也可以看出,所以大家使用中谨慎。

  • 相关阅读:
    hadoop 异常及处理总结-02(小马哥精品)
    Linux环境变量(小马哥推荐)
    Apache Tomcat 8.5 安全配置与高并发优化
    深入理解分布式系统中的缓存架构(上)
    Redis的n种妙用,不仅仅是缓存
    springBoot整合ecache缓存
    Spark Streaming实时处理应用
    Spark 实践
    spark性能调优
    Spark调优
  • 原文地址:https://www.cnblogs.com/Kevin-1992/p/12608352.html
Copyright © 2011-2022 走看看