zoukankan      html  css  js  c++  java
  • java的定时轮询


    ScheduledExecutorService service = Executors.newScheduledThreadPool(10);
    service.scheduleAtFixedRate(() -> {

    LocalDateTime start = LocalDateTime.now().withNano(0).minusSeconds(1);
    LocalDateTime end = LocalDateTime.now().withNano(0);
    List<String> strings=null;
    for (int index = 0; index < GET_RETRY_TIMES; index++) {

    try {

    事件处理

    } catch (Exception e) {
    System.out.println("shibai%d" + start + end);
    logger.error(String.format("获取信息失败 开始时间:[%s], 结束时间:[%s]", start.toString(), end.toString()));
    }
    }
    for (int index = 0; index < SET_RETRY_TIMES; index++) {
    try {

    queueService.orderMsetMessage(strings);
    break;

    } catch (Exception e) {
    System.out.println(start.toString()+end.toString());
    logger.error(String.format("写入数据失败 开始时间:[%s], 结束时间:[%s]", start.toString(), end.toString()));

    }
    }

    }, 0, 1, TimeUnit.SECONDS);

    在java中,Timer类主要用于定时性、周期性任务 的触发,这个类中有两个方法比较难理解,那就是schedule和scheduleAtFixedRate方法,在这里就用实例分析一下

    (1)schedule方法:“fixed-delay”;如果第一次执行时间被delay了,随后的执行时间  上一次 实际执行完成的时间点 进行计算
    (2)scheduleAtFixedRate方法:“fixed-rate”;如果第一次执行时间被delay了,随后的执行时间按照 上一次开始的时间点 进行计算,并且为了”catch up”会多次执行任务,TimerTask中的执行体需要考虑同步
  • 相关阅读:
    python基础:多进程讲解
    vue 导出数据
    vue 导入excel数据组件
    vue 分页组件
    vue 点击空白区域隐藏div
    vue 类似淘宝选择地址组件
    js基础练习经典题(数组,质数,数组的遍历等等)
    js去重复
    理解CSS3里的Flex布局用法
    书写HTML5/CSS3的命名规则
  • 原文地址:https://www.cnblogs.com/jie123/p/5450149.html
Copyright © 2011-2022 走看看