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

  • 相关阅读:
    Qt5:快速设计对话框 QtDesigner 的使用
    Qt5:为菜单项添加图标 、 快捷键 和 状态栏 提示
    Qt5:在窗口上创建菜单栏
    Qt5:主窗口的创建 子类化QMainWindow
    AltiumDesigner设计快速入门
    AT24C02的MSP430驱动
    DSP_Builder设计方法说明_SinWave
    矩阵按键的MSP430驱动函数
    DAC8552使用说明
    PS2的FPGA解码模块
  • 原文地址:https://www.cnblogs.com/Kevin-1992/p/12608352.html
Copyright © 2011-2022 走看看