【外文翻译】使用Timer类去调度任务 ——java
使用Timer类去调度任务 ——java
原文地址:https://dzone.com/articles/using-timer-class-to-schedule-tasks
原文作者:Jay Sridhar
很多时候我们写的JAVA程序需要运行一些任务。可能你想要定期清理一下资源,或者想要检查一下状态,又或者是要拿某个URL(第一次可能拿不到,需要多次尝试)。
针对上诉情况,Timer类提供了非常简单的接口用于任务调度。下面我们来看一下如何去使用。
定义你的任务
Timer类执行的任务需要继承TimerTask类。而TimerTask类是实现了Runnable接口的。这里有一个简单的继承TimerTask的例子。你只需要在run()方法里实现你的代码。
public class MyTask extends TimerTask
{
    private String name;
    public MyTask(String name) {
        this.name = name;
    }
    public void run() {
        System.out.println(Thread.currentThread() + " executing " +
                           this.name + " [" +
                           new Date() + "]");
    }
}
运行任务
之后,你需要新建一个Timer实例,如下
Timer timer = new Timer();
非常简单。这个实例会开启一个线程在后台中运行,准备去执行任何你扔进去的任务。现在我们放一个任务进去。这里我们需要执行任务的时间安排,该任务会在指定的时刻执行并完成。
timer.schedule(new MyTask("john"), new Date(new Date().getTime() + 5000));
下面是结果输出:
Thread[Timer-0,5,main] executing john [Mon Apr 24 18:04:56 IST 2017]
使用Instant去创建日前
除了用上面那种笨拙的方式定义一个5秒后的时刻,你也可以用Instant类去实现。创建一个Instant类,增加5秒,之后再将它转化为Date类型。
timer.schedule(new MyTask("john"), Date.from(Instant.now().plusSeconds(5)));
重复执行任务
等等,Timer类当然不止这么点东西。Timer类也允许你重复执行某一个任务。在下面的代码中,我们每隔3秒就执行这个任务一次(比如去检查股票的行情)。
timer.schedule(new MyTask("jack"), 0, 3000);
下面的结果可以看出这个任务确实每隔3秒就执行一次
Thread[Timer-0,5,main] executing jack [Mon Apr 24 18:12:36 IST 2017]
Thread[Timer-0,5,main] executing jack [Mon Apr 24 18:12:39 IST 2017]
Thread[Timer-0,5,main] executing jack [Mon Apr 24 18:12:42 IST 2017]
几行代码就可以在你的应用中加入任务调度了,是不是很简洁?
延迟开始任务
如果你想重复执行任务,又想延迟一段之间开始,那怎么办呢?这种情况也是被考虑到的。下面我们定义了1秒后才开始任务,并且每隔0.5秒执行一次
timer.schedule(new MyTask("joe"), 1000, 500);
说明
Timer只是一个很简单的类,这意味着只适用于一些简单的情况。对于更加复杂的需求,比如线程池, 用ExecutorService更加合适。
【外文翻译】使用Timer类去调度任务 ——java的更多相关文章
- [ImportNew]Java中的Timer类和TimerTask类
		
http://www.importnew.com/9978.html java.util.Timer是一个实用工具类,该类用来调度一个线程,使它可以在将来某一时刻执行. Java的Timer类可以调度 ...
 - Java学习笔记 -- Java定时调度工具Timer类
		
1 关于 (时间宝贵的小姐姐请跳过) 本教程是基于Java定时任务调度工具详解之Timer篇的学习笔记. 什么是定时任务调度 基于给定的时间点,给定的时间间隔或者给定的执行次数自动执行的任务. 在Ja ...
 - java swing中Timer类的学习
		
最近在完成学校课程的java平时作业,要实现一个计时器,包含开始.暂停以及重置三个功能.由于老师规定要用这个timer类,也就去学习了一下,顺便记录一下. 首先呢去查了一下java手册上的东西,发现t ...
 - java之 Timer 类的简单使用案例
		
(如果您看到本文章务必看结尾!) 第一次用Timer类,记录一下个人理解. 场景:做苹果内容结果验证时,根据苹果支付凭证去苹果官方服务器验证是否支付成功.但因为苹果服务器比较慢,第 ...
 - C#的timer类
		
在C#里关于定时器类就有3个 1.定义在System.Windows.Forms里 2.定义在System.Threading.Timer类里 3.定义在System.Timers.Timer类里 S ...
 - C# 多线程九之Timer类
		
1.简介 相信写过定时任务的小伙伴都知道这个类,非常的轻量级,而且FCL中大量的类使用了这个方法,比如CancellationTokenSource的CancelAfter就是用Timer去做的. 当 ...
 - 给System.Timer类的Elapsed事件加锁
		
背景: 最近在做一个项目,程序是命令行程序,在主程序中开一个线程,这个线程用到了System.Timer类的Elapsed事件,根据指定时间间隔循环去查询数据库,找符合条件的记录,把记录组织成xml对 ...
 - 定时器:Timer:System.Threading.Timer类(转)
		
最近的一个项目有一些地方需要用到定时功能,在设计过程中,突然发现.net的Timer类居然还有很多我以前没有用过的功能,这里就跟大家分享一下 注:这里的Timer类特指System.Threading ...
 - 什么是 Java Timer 类?如何创建一个有特定时间间隔的任务?
		
java.util.Timer 是一个工具类,可以用于安排一个线程在未来的某个特定时间执 行.Timer 类可以用安排一次性任务或者周期任务. java.util.TimerTask 是一个实现了 R ...
 
随机推荐
- 清理浏览器网站缓存的几种方法(meta,form表单,ajax)
			
1.meta方法 HTML header中加入 <meta http-equiv="pragma" content="no-cache"> 说明 ...
 - Android四大组件详解
			
注:本文主要来自网易的一个博主的文章,经过阅读,总结,故留下文章在此 Android四大基本组件介绍与生命周期 Android四大基本组件分别是Activity,Service服务,Content P ...
 - 10分钟精通SharePoint - SharePoint拓扑结构
			
SharePoint服务器角色:前端,应用程序和数据库服务器 应用程序服务:搜索.Office文档.User Profile和App等应用服务器 数据库类型:内容数据库.应用程序数据库和配置数据库 规 ...
 - 帝国CMS万能标签的使用
			
标签名称: 带模板的信息调用标签[万能标签] [ecmsinfo]栏目ID/专题ID,显示条数,标题截取数,是否显示栏目名,操作类型,标签模板ID,只显示有标题图片[/ecmsinfo] 说明:e ...
 - 混合高斯模型(GMM)推导及实现
			
作者:桂. 时间:2017-03-20 06:20:54 链接:http://www.cnblogs.com/xingshansi/p/6584555.html 声明:欢迎被转载,不过记得注明出处哦 ...
 - 源码分析——从AIDL的使用开始理解Binder进程间通信的流程
			
源码分析——从AIDL的使用开始理解Binder进程间通信的流程 Binder通信是Android系统架构的基础.本文尝试从AIDL的使用开始理解系统的Binder通信. 0x00 一个AIDL的例子 ...
 - SSH里面使用jQuery的ajax
			
今天我真的很兴奋!在我的SSH项目中用jQuery的异步传输成功了,经过一天多的奋战,大工告成! 我的项目需求是在javascript中向我的controller(即:action)中传输form表单 ...
 - PPAPI插件开发指南
			
转载请注明出处:http://www.cnblogs.com/fangkm/p/4401075.html 前言 插件一直是浏览器的重要组成部分,丰富浏览器的运行能力,实现一些HTML+JS实现不了本地 ...
 - JDBC与ArrayList和hashmao
			
JDBC帮助类 package work; import java.beans.Statement;import java.sql.Connection;import java.sql.DriverM ...
 - Android -- 贝塞尔使圆渐变为桃心
			
1,我们上一篇介绍了贝塞尔曲线推到原理和在Android里的简单使用,今天就和来写写贝塞尔曲线的实际应用,今天实现的效果图如下: 2,思路分析 我们知道首先我们的view是一个圆,这里的圆其实是由四块 ...