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

  • 相关阅读:
    PHPStorm--美化
    Laravel5.1 模型--关联关系(复杂)
    HTML5 getUserMedia/AudioContext 打造音谱图形化
    如何在终端实时展现当前运行的git分支
    关于ionic的跨域问题
    ionic插件安装与卸载
    虚拟机调试ionic项目
    ionic双击退出键退出APP
    npm install 镜像
    对Date的扩展,将 Date 转化为指定格式的String
  • 原文地址:https://www.cnblogs.com/Kevin-1992/p/12608352.html
Copyright © 2011-2022 走看看