小伙伴们知道java定时器timer吗?本篇文章小编就来带大家了解一下它的概念及实现方法。

通俗的说,我们可以将Timer当成是一种工具,线程会用它安排以后在后台线程中执行的任务。嫩够安排任务执行一次或定期重复执行。但实际上它就是个线程,只是定时调度所拥有的TimerTasks而已。

TimerTask具体来说就是一个抽象类,它的子类会由 Timer

安排一次执行或重复执行的任务。实际上就是一个拥有run方法的类,只是将需要定时执行的代码放到run方法体内。

实现private Set  unitTimeSet = new HashSet  (24); //每天更新整点数,把已经检查的时间记录下来

public void checkDeviceDeopped()

{

Calendar calendar = Calendar.getInstance();

//此时要在 第一次执行定时任务的时间加一小时,以便此任务在下个时间点执行。

calendar.add(Calendar.HOUR_OF_DAY, 1);

calendar.set(Calendar.MINUTE, 0);

calendar.set(Calendar.SECOND, 0);

java.util.Date date = calendar.getTime(); //第一次执行定时任务的时间

Timer timer = new Timer(true);

timer.schedule(new TimerTask()

{

public void run()

{

Calendar cal = Calendar.getInstance();

int hour = cal.get(Calendar.HOUR_OF_DAY);

if (hour == 0)

{

unitTimeSet.clear();

}

if (hour % unitTime == 0 && !unitTimeSet.contains(hour))

{

Session session = sessionFactory.openSession();

cal.set(Calendar.MINUTE, 0);

cal.set(Calendar.SECOND, 0);

java.util.Date endTime = cal.getTime();

cal.add(Calendar.HOUR_OF_DAY, -1);

java.util.Date startTime = cal.getTime();

for (String deviceId: mapNvr.keySet())

{

//查询设备在指定时间内的掉线次数

Integer offLineNum = 0;

try

{

offLineNum = (Integer) session.createQuery("SELECT COUNT(*) FROM SystemLog WHERE workerid= :deviceId AND dt<= :endTime AND dt>= :startTime ")

.setParameter("deviceId", deviceId)

.setParameter("endTime", endTime, TemporalType.TIMESTAMP)

.setParameter("startTime", startTime, TemporalType.TIMESTAMP)

.uniqueResult();

}

catch (Exception e)

{

e.printStackTrace();

}

if (offLineNum >= 10)

{

//发送邮件

try

{

CompletableFuture.runAsync(() - >

{

sendMail("NUM", deviceId);

});

}

catch (Exception e)

{

e.printStackTrace();

}

}

}

}

unitTimeSet.add(hour);

}

}, date, 60 * 60 * 1000);

}

以上就是本篇文章的所有内容,更多有关java基础的详细知识可以关注我们来了解详情。

推荐阅读:

java的定时器是什么_java定时器timer是什么?该如何实现?相关推荐

  1. java 定时器10秒_Java定时器的使用(Timer)

    java定时器的使用(Timer) 1.在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等.对于这样的操作最方便.高效的实现方式就是使用java.util.Timer工具类. priv ...

  2. java 定时器 每天凌晨_java定时器 每天凌晨 固定执行一个方法

    满意答案 x11893497 2014.05.28 采纳率:40%    等级:9 已帮助:312人 二.如果是需要Tomcat启动就能执行,不需要main方法的定时器的话: web.xml里面需要这 ...

  3. java定时器怎么写_java定时器代码该怎么写?

    Java中定时器的实现小伙伴们了解过吗?对于一些特殊的代码是需要定时执行的,下面来看看定时器该如何编写吧. 主方法//服务器启动时开始调用启动 package com.casco.csmis.szdc ...

  4. java 每天执行一次_java定时器每隔5秒执行一次任务要怎么编写?

    题目:使用Java定时器,实现每隔五秒执行一次,下面我们一起来看看它的实现方法. 例:public static void main(String[] args) { SimpleDateFormat ...

  5. java一定时间间隔的定时任务_Java 定时任务---Timer

    本文来自我一个朋友的个人博客(希望各位以后多多支持):https://www.liupeng.mobi/archives/777 一.Timer类 在java中一个完整的定时任务需要由Timer和Ti ...

  6. java wait定时_java定时器的使用(Timer)

    java定时器的使用(Timer) 1.在应用开发中,常常须要一些周期性的操作,比方每5分钟运行某一操作等. 对于这种操作最方便.高效的实现方式就是使用java.util.Timer工具类. priv ...

  7. Java多线程学习笔记20之定时器Timer

    详细代码见:github代码地址 本节内容: 定时器Timer的使用及分析 1) 如何实现指定时间执行任务 2) 如何实现按指定周期执行任务 第五章 定时器Timer 定时/计划功能在移动开发领域使用 ...

  8. java定时器配置_java定时器实现如何配置?

    定时器在一些时候会起到不可忽视的作用,本篇文章我们就来通过一些例子详细了解一下定时器的实现. 例1:import java.util.TimerTask; public class TimeTast  ...

  9. java定时器 并发_【java多线程与并发库】— 定时器的应用 | 学步园

    定时器的应用 1.  定时器主要涉及到两个类(java.util包中) @->public class Timer extendsObject (一种工具,线程用其安排以后在后台线程中执行的任务 ...

最新文章

  1. 实战:使用 OpenCV 的自动驾驶汽车车道检测(附代码)
  2. 心生想往 ... ...
  3. 使用export/import导出和导入docker容器
  4. Linux学习总结(76)—— Shell 脚本日志技巧
  5. java map中套map_Java Map – Java中的Map
  6. 最直白的编译原理-词法分析(清华-王书3版)
  7. iOS 一键加入QQ群(项目常用)
  8. 双线服务器托管的三大优势
  9. 直播源php代理用什么主机,流媒体直播系统_流媒体直播php源码_流媒体直播源码...
  10. 如果生活将我们拆散了
  11. 绘制奥林匹克五环旗。
  12. 工程师必备硬件EMC设计规范
  13. 马哥教育SRE笔记【作业】week05
  14. 项目(二)Lenovo商城
  15. 离职,见人品,显格局
  16. 科普篇:TD-LTE
  17. 程序员遇到 Bug 时的 30 个反应,你是哪一种?
  18. 【Java项目】MVC教学评价系统
  19. 【uni-app】H5的返回拦截经验分享
  20. 建设智能温室大棚的条件

热门文章

  1. 03 ts类型缩小,函数
  2. matlab 与latex结合,TeX系列: MATLAB和LaTeX结合绘图
  3. 视觉系统构建(三)——视觉光源
  4. route命令linux详解,Linux系统运维关于route命令的详解
  5. 信号调制--基带调制和射频调制
  6. USB OTG 检测原理
  7. 使用深度学习对你的颜值打分
  8. 树莓派3B+ FM发射器问题
  9. 【做饭】论如何把肉炒硬
  10. activiti获取个人历史任务businessKey