Java定时器Timer
Java定时器Timer
在JDK库中,Timer类主要负责计划任务的功能,也就是在指定的时开始执行某一个任务。Timer类的主要作用就是设置计划任务,但封装任务的类却是TimerTask类,执行计划任务的代码要放入TimerTask的子类中,因为TimerTask是一个抽象类。下面通过实例说一说,如何实现指定时间执行任务以及实现指定周期执行任务。
在指定时间执行
方法schedule(TimerTask,Date time),该方法的作用是在指定的日期执行一次某一任务。
执行任务类MyTask
public class MyTask extends TimerTask{
@Override
public void run() {
System.out.println("任务执行了,时间为:" + new Date());
System.gc(); // 回收Timer
this.cancel(); //结束当前线程
}
}
场景1:执行任务晚于当前时间--延迟执行
public class Test {
public static void main(String[] args) {
System.out.println("当前时间为:" + new Date());
Calendar calen = Calendar.getInstance();
calen.add(Calendar.SECOND,5);
Date runDate = calen.getTime();
MyTask task = new MyTask();
Timer timer = new Timer();
timer.schedule(task,runDate);
}
}
执行结果:
Connected to the target VM, address: '127.0.0.1:63242', transport: 'socket'
public class Test1 {
public static void main(String[] args) {
System.out.println("当前时间为:" + new Date());
Calendar calen = Calendar.getInstance();
calen.add(Calendar.SECOND,-10);
Date runDate = calen.getTime();
MyTask task = new MyTask();
Timer timer = new Timer();
timer.schedule(task,runDate);
}
}
public class Test2 {
public static void main(String[] args) {
System.out.println("当前时间为:" + new Date());
Calendar calen1 = Calendar.getInstance();
calen1.add(Calendar.SECOND,5);
Date runDate1 = calen1.getTime();
MyTask task1 = new MyTask(); Calendar calen2 = Calendar.getInstance();
calen2.add(Calendar.SECOND,-10);
Date runDate2 = calen2.getTime();
MyTask task2 = new MyTask(); Timer timer = new Timer();
timer.schedule(task1,runDate1);
timer.schedule(task2,runDate2); }
}
周期性执行
public class MyTask1 extends TimerTask{
@Override
public void run() {
System.out.println("任务执行了,时间为:" + new Date());
}
}
public class Test3 {
public static void main(String[] args) {
System.out.println("当前时间为:" + new Date());
Calendar calen = Calendar.getInstance();
calen.add(Calendar.SECOND,5);
Date runDate = calen.getTime();
MyTask1 task = new MyTask1();
Timer timer = new Timer();
timer.schedule(task,runDate,4000);
}
}
Java定时器Timer的更多相关文章
- Java定时器Timer,TimerTask每隔一段时间随机生成数字
1:java.util.Timer类是一种工具,线程用其安排以后在后台线程中执行的任务.可安排任务执行一次,或者定期重复执行. 2:TimerTask类是由 Timer 安排为一次执行或重复执行的任务 ...
- java定时器Timer的使用
Time类主要负责完成定时计划任务的功能,就是在指定的时间的开始执行某个任务. Timer类的作用是设置计划任务,而封装任务内容的类是TimerTask类.此类是一个抽象类,继承需要实现一个run方法 ...
- Java定时器Timer简述
概述 主要用于Java线程里指定时间或周期运行任务.Timer是线程安全的,但不提供实时性(real-time)保证. 构造函数 Timer() 默认构造函数. Timer(boolean) 指定关联 ...
- Java 定时器 Timer 的使用.
一.概念 定时计划任务功能在Java中主要使用的就是Timer对象,它在内部使用多线程的方式进行处理,所以它和多线程技术还是有非常大的关联的.在JDK中Timer类主要负责计划任务的功能, ...
- Java定时器Timer的使用详解
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6374714.html 定时器在Web开发中使用得不是很多.这里主要列举一下使用定时器的步骤,方便日后使用时查 ...
- Java定时器Timer使用方法详解
感谢大佬:https://www.jb51.net/article/129808.htm 一.概念 定时计划任务功能在Java中主要使用的就是Timer对象,它在内部使用多线程的方式进行处理,所以它和 ...
- java多线程--定时器Timer的使用
定时的功能我们在手机上见得比较多,比如定时清理垃圾,闹钟,等等.定时功能在java中主要使用的就是Timer对象,他在内部使用的就是多线程的技术. Time类主要负责完成定时计划任务的功能,就是在指定 ...
- Java 中Timer和TimerTask 定时器和定时任务使用的例子
转自:http://blog.csdn.net/kalision/article/details/7692796 这两个类使用起来非常方便,可以完成我们对定时器的绝大多数需求 Timer类是用来执行任 ...
- Java定时器:Timer
项目中往往会遇到需要定时的任务,例如订单,当用户在某个规定时间内没有操作订单时,订单状态将会发生改变. 那么在这种情况下,我们会用到定时器. 举例: import java.util.Timer; / ...
随机推荐
- css3 加载动画
代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8& ...
- last, lastb - 显示最近登录的用户列表
总览 last [-R] [-num] [ -n num ] [-adiox] [ -f file ] [name...] [tty...] lastb [-R] [-num] [ -n num ] ...
- Python3使运行暂停的方法
在Python3中已经有很大一部分语句与Python2不互通了,运行暂停的方法也有所不同. 1.input(); 这种方法不用包含模块,因此这也是最常用的一种暂停手段. Python2中的raw_in ...
- python cv2的视频检测:睁眼闭眼
如题,想实现一个简单的根据摄像头的某一帧检测睁眼闭眼的功能. 初步的想法是: 1. cv2调用计算机摄像头,读取某一帧的画面. 2. 将该画面作为 哈尔-人脸分类器的输入接口,根据分类器结果返回分类的 ...
- Thiago2(TPO AI.ROSTO):集成式AI换脸软件(Autodesk Flame)
如标题一样,Thiago2 是一款集成式AI换脸软件(TPO AI.ROSTO),需要与Autodesk Flame结合使用,从demo来看完成度还是很高的,算是一种完全GUI版的DeepFaceLa ...
- u-boot bl _main分析
ldr r0, =(CONFIG_SYS_INIT_SP_ADDR): #define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_INIT_RAM_ADDR ...
- IDEA部署Spring-boot到Docker容器
一.准备工作 idea安装Docker插件 centos7系统安装docker 二.打开docker远程端口 1. 编辑docker.service文件 vim /usr/lib/systemd/sy ...
- 【POJ2152】Fire
题目大意:给定一棵 N 个节点的无根树,点有点权,边有边权,现需要选出一个点集,满足树上任意一个点到该点集的距离不超过该点的给定值,求选出点集点权的最小值是多少. 题解:可以发现,对于以 i 为根的子 ...
- python绘制国际象棋棋盘核心代码
import turtle step = 40 for i in range(8): for j in range(8): turtle.penup() turtle.goto(i*step, j*s ...
- VirtualBox导入VmWare生成的.vmdk格式虚拟机镜像
VmWare默认的镜像格式是.vmdk格式的,VirtualBox则默认是.vdi格式的.其实这在VirtualBox新建虚拟机的过程中是可选的. 导入.vmdk格式的镜像到VirtualBox只需要 ...