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中也可以看出,所以大家使用中谨慎。

  • 相关阅读:
    SQL表连接查询inner join left join right join full join ...
    希尔伯特空间回顾(简直太好了)
    pytorch的matmul怎么广播
    pytorch怎么抽取中间的特征或者梯度
    winedt102安装
    数据挖掘 关联规则
    git 命令
    caffe: c++11支持
    匈牙利算法
    ubuntu两个conda安装和切换
  • 原文地址:https://www.cnblogs.com/Kevin-1992/p/12608352.html
Copyright © 2011-2022 走看看