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; / ...
随机推荐
- js事件冒泡、阻止事件冒泡以及阻止默认行为
事件冒泡 当事件发生后,这个事件就要开始传播(从里到外或者从外向里).为什么要传播呢?因为事件源本身(可能)并没有处理事件的能力,即处理事件的函数(方法)并未绑定在该事件源上.例如我们点击一个按钮时, ...
- s:schema报错问题
解决方案: 删除所有<s:element ref="s:schema"/>标签 说明书改为本地文件
- Java 判断是否为回文字符串
回文字符串有两种:abcba,abccba. 代码: static boolean func(String str) { int len = str.length(); for (int i = 0; ...
- 扫描全能王 v5.13.0.20190916 去水印和广告版
说明 1.先安装1(安装完不要打开),再安装2,然后打开2,参考下图: 2.不要登录扫描全能王账号,否则会导致失败! 3.激活完成后可以卸载2 下载地址 城通网盘 蓝奏云(仅含1) 百度网盘 另外口袋 ...
- 用jmeter进行接口测试(2)
1.jmeter配置元件之HTTP信息头管理器使用 右击线程组-[添加]-[HTTP信息头管理器] 是打发 Jmeter请求元件之参数化txt
- Mysterious Crime CodeForces - 1043D (思维+组合数学)
Acingel is a small town. There was only one doctor here — Miss Ada. She was very friendly and nobody ...
- [每日一学]apache camel简介
apache camel 是轻量级esb框架.如下是它的架构图: 它有几个比较重要的概念就是: 1.endpoint,所谓的endpoint,就是一种可以接收或发送数据的组件.可以支持多种协议,如jm ...
- Angular7和PrimeNg集成
常规操作之后,随便加了一个控件发现报错了.错误信息看起来是不能识别PrimeNg的组件,经过一番折腾发现.因为用到了ngModel,需要导入FormsModule.因为新建的工程没有导入,导入之后就好 ...
- 【HDU2089】不要62
题目大意:求区间 [n,m] 中数位不包含 4 和 62 的数字的个数. 题解:数位dp. 预处理出 \(f[i][j]\) 表示 i 位数字中以 j 为第一位的满足条件的数字个数. 对于统计答案来说 ...
- css不常见属性之pointer-events
MDN 上介绍为 CSS 属性指定在什么情况下 (如果有) 某个特定的图形元素可以成为鼠标事件的 target.pointer-events 属性值有: /* Keyword values */ po ...