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

  • 相关阅读:
    浮点数转换成二进制的方法
    复杂的函数声明
    任务栏上最小化程序后,应用程序仍然处于激活状态
    处理多屏
    托盘在XP下不能显示tooltip,在Vista和Windows7下正常
    第一次WM_PAINT事件执行前显示白色框 的解决办法
    IPv6地址在URL上的格式
    19 层模型中的固定定位
    18css中的相对定位
    17css中的浮动模型
  • 原文地址:https://www.cnblogs.com/Kevin-1992/p/12608352.html
Copyright © 2011-2022 走看看