java se 定时任务_Java实现定时任务的三种方法

一、Quartz的特点 按作业类的继承方式来分,主要有以下两种: 作业类继承org.springframework.scheduling.quartz.QuartzJobBean类的方式作业类不继承org.springframework.scheduling.quartz.QuartzJobBean类的方式 注:个人比较推崇第二种,因为这种方式下的

在应用里经常都有用到在后台跑定时任务的需求。举个例子,比如需要在服务后台跑一个定时任务来进行非实时计算,清除临时数据、文件等。在本文里,我会给大家介绍3种不同的实现方法: 普通thread实现 TimerTask实现 ScheduledExecutorService实现 普通thread 这是最常见的,创建一个thread,然后让它在while循环里一直运行着,通过sleep方法来达到定时任务的效果。这样可以快速简单的实现,代码如下: package com.vmware.task;import java.util.Date;import java.util.List;import java.util.Map;import com.vmware.dao.TemplateDao;import com.vmware.pojo.Template;import com.vmware.util.TimeUtil;public class TemplateVMTask implements Runnable

{

@Override

public void run() {

while(true){

long starttime=new Date().getTime();//开始时间

String sql="SELECT * from tb_flw_content where type_id='1' or type_id='4'

and `status`='2'";

TemplateDao dao=new TemplateDao();

List list=dao.getTemplate(sql);

VirtualMachineTemplate template=new VirtualMachineTemplate();

template.tempalteToVm(list);

long endtime=new Date().getTime();//结束时间

long usetime=endtime-starttime;//使用时间

try{

//读取配置文件

TimeUtil util=new TimeUtil();

Map map=util.getURL();

long time=Long.parseLong(String.valueOf(map.get("time")))*1000;//配置时间

if(time-usetime>0){

Thread.sleep(time-usetime);//休眠时间

}

}catch(Exception e){

e.printStackTrace();

}

}

}}在main 方法中,启动该线程 package com.vmware.test;import com.vmware.task.TemplateVMTask;public class Test {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

TemplateVMTask task=new TemplateVMTask();

Thread thread=new Thread(task);

thread.start();

}} 用Timer和TimerTask 上面的实现是非常快用三种方法来实现n!实现使用BigDecimal类,因为用int最多正确算到12!,用long最多正确算到20!.实现方法都比较简单,但是转换为BigDecimal实现后可能看起来有点莫名其妙。废话不多说,直接上代码:

第一种方法:从1开始,一直递增乘到n,从而实现n!

Java代码速简便的,但它也缺少一些功能。 用Timer和TimerTask的话与上述方法相比有如下好处: 当启动和去取消任务时可以控制 第一次执行任务时可以指定你想要的delay时间 在实现时,Timer类可以调度任务,TimerTask则是通过在run()方法里实现具体任务。 Timer实例可以调度多任务,它是线程安全的。 当Timer的构造器被调用时,它创建了一个线程,这个线程可以用来调度任务: import java.util.Timer;import java.util.TimerTask;public class Task2 {

public static void main(String[] args) {

TimerTask task = new TimerTask() {

@Override

public void run() {

// task to run goes here

System.out.println("Hello !!!");

}

};

Timer timer = new Timer();

long delay = 0;

long intevalPeriod = 1 * 1000;

// schedules the task to be run in an interval

timer.scheduleAtFixedRate(task, delay,

intevalPeriod);

} // end of main} ScheduledExecutorService ScheduledExecutorService是从Java SE 5的java.util.concurrent里,做为并发工具类被引进的,这是最理想的定时任务实现方式。 相比于上两个方法,它有以下好处:

相比于Timer的单线程,它是通过线程池的方式来执行任务的

可以很灵活的去设定第一次执行任务delay时间

提供了良好的约定,以便设定执行的时间间隔

我们通过ScheduledExecutorService#scheduleAtFixedRate展示这个例子,通过代码里参数的控制,首次执行加了delay时间: import java.util.concurrent.Executors;import java.util.concurrent.ScheduledExecutorService;import java.util.concurrent.TimeUnit;public class Task3 {

public static void main(String[] args) {

Runnable runnable = new Runnable() {

public void run() {

// task to run goes here

System.out.println("Hello !!");

}

};

ScheduledExecutorService service = Executors

.newSingleThreadScheduledExecutor();

service.scheduleAtFixedRate(runnable, 0, 1, TimeUnit.SECONDS);

}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/344445.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring框架介绍

这是Spring框架和Spring核心概念的简介。 在本教程中,我们将介绍Spring Framework的主要优点和功能。 在随后的教程中,我们将学习有关Spring和Spring Boot的更多信息。 总览 我们知道, Spring框架是Java开发人员中最受欢迎的应用程序框架。 …

【渝粤教育】电大中专职业生涯规划 (2)_1作业 题库

1职业价值观具有明确的目的性、()和坚定性的职业选择的态度和行为。 A自由性 B动机性 C自觉性 D制约性 错误 正确答案:左边查询 学生答案:A 2不属于探索价值观方法的是()。 A澄清反应法 B意见表决法 C间接提…

【渝粤教育】电大中专会计电算化_1作业 题库

1.下列有关会计电算化狭义概念的说法正确的是()。 A.以会计理论为主体的电子信息技术在会计工作中的应用 B.与实现电算化有关的所有工作 C.以电子计算机为主体的电子信息技术在会计工作中的应用 D.与实现电算化有关的主要工作 错误 正确答案:左边查询 学生答案&…

java 移动其他窗口_移动窗口平均值不等

TL;DR: 无论如何我可以摆脱我的第二个 for -loop?我在2D网格上有一系列时间点 . 为了消除它们位置的快速波动,我在一个帧窗口上平均坐标 . 现在在我的情况下,它想要包含特定点的帧,如果它的行程比 cut_off 值更远 .在第一个 for -…

auot lisp 选择集处理_请教个选择集排序的问题 - AutoLISP/Visual LISP 编程技术 - CAD论坛 - 明经CAD社区 - Powered by Discuz!...

本帖最后由 vlisp2012 于 2013-10-9 16:27 编辑通过ssget获得的选择集的排序,无法很好的控制,每次下面材的时候,都是通过fence,画线选择板块,很繁琐。我想编辑一个程序,通过x坐标和y坐标来对面材(封闭多段线…

mockito模拟依赖注入_使用Mockito模拟自动装配的字段

mockito模拟依赖注入依赖注入是诸如Spring和EJB之类的Control容器反转的非常强大的功能。 将注入的值封装到私有字段中总是一个好主意。 但是,自动连线字段的封装会降低可测试性。 我喜欢Mockito解决此问题以模拟自动装配字段的方式。 将在示例中进行解释。 &#…

【渝粤教育】电大中专药物化学基础_1作业 题库

1.关于药物的分配系数对药效的影响,叙述正确的是()。 A.分配系数愈小,药效愈好 B.分配系数愈大,药效愈好 C.分配系数愈小,药效愈低 D.分配系数愈大,药效愈低 E.分配系数适当,药效为好…

【渝粤教育】广东开放大学 动画原画设计 形成性考核 (22)

选择题 题目:默认情况下,用户在使用形状工具绘制形状时,形状图层的内容均以哪种形式填充。 题目:利用颜色取样器获取颜色时,最多可以创建多少个取样点 题目:哪种滤镜可以把图像变得柔和? 题目&a…

【渝粤题库】陕西师范大学200091 东方文学专题研究 作业

《东方文学专题》作业 一、单选题 1、( )是古代埃及的一部诗歌总集,也是世界上现存最古老的诗集和最早的书面文学作品。 A 《亡灵书》 B 《庄稼人的歌谣》 C 《荷马史诗》 D《神话》 2、( )被称为“史诗之王”&#xf…

java 80_【JavaWeb】80:js基础详解

今天是刘小爱自学Java的第80天。感谢你的观看,谢谢你。话不多说,开始今天的学习:JavaScript是一门编程语言,但凡是编程语言,其在基本语法上都是大同小异的。我们学了Java,那么再学习其它语言时,…

【渝粤题库】陕西师范大学200101 西方文学 作业(高起专)

《西方文学》作业 一.填空题 1.古希腊悲剧之父是 ,他的代表作品是 。 2.法国人文主义文学最杰出的代表作家是 ,他的代表作品是 。 3.法国批判现实主义文学的奠基人是 ,他的代表作品是 。 4.易卜生的四大社会问题剧是 、 、 、 。 …

半年时间能学会php吗_4个月真的能学会PHP吗

4个月真的能学会PHP吗有些一直想来源码时代学习PHP学科的学员很好奇,这么多的内容,在5个月左右就全部学完,真的可以么?这几个月以后自己还是一问三不知怎么办?今天,我们就来说说学习PHP这件事。PHP是什么,应用得怎么…

【渝粤题库】陕西师范大学200651线性代数 作业(高起专、高起本)

《线性代数》作业 一、选择题 1&#xff0e;如果D&#xff0c;则行列式的值应为&#xff1a; A&#xff0e; 6D B&#xff0e;12D C&#xff0e;24D D&#xff0e;36D 2&#xff0e;设A 为n阶方阵&#xff0c;R&#xff08;A&#xff09;r<n,那么&#xff1a; A&#xff0e;…

【渝粤题库】陕西师范大学201381 国际经济法作业

《国际经济法》作业 一、单项选择题 1&#xff0e;在下列贸易术语中&#xff0c;应当由买方办理租船订舱手续的是哪种术语&#xff1f; A&#xff0e;FOB      B&#xff0e;CFR      C&#xff0e;CIP       D&#xff0e;DDP 2&#xff0e;《联合国国际货物买…

php manager iis 8,PHPManager2下载

PHP Manager 2.x 理论支持win10,win8,win7,Windows Server2008,Windows Server2012,Windows Server2012R2,Windows Server2016,,Windows Server2019与其对应的IIS版本.--PHP Manager 2.4 for IIS10,IIS8,IIS7 下载简单但功能强大具有独特功能的工具&#xff0c;可以处理所有细节…

【渝粤题库】陕西师范大学202012 刑事诉讼法专论 作业

《刑事诉讼法专论》作业 一、单项选择题 1.在刑事诉讼中&#xff0c;法官消极中立&#xff0c;通过当事人举证、辩论发现事实真相&#xff0c;并由当事人人推动诉讼进程。这种诉讼构造属于下列哪一种类型&#xff1f;&#xff08; &#xff09; A.职权主义  B.当事人主义  …

【渝粤题库】陕西师范大学202411 管理学基础 作业 (专升本、高起本、高起专)

《管理学基础》作业 一、名词解释 管理       2. 科学管理理论    3. 定性目标      4. 管理主体经济方法     6&#xff0e;规划        7&#xff0e;行政组织理论    8&#xff0e;高层目标管理环境     10&#xff0e;人际关系学说 …

移动支付php,银联手机支付服务端PHP端代码

1 开发前准备 先和银联手机支付签约&#xff0c;他们会给你测试的证书已经手机客户端的控件2 将包里的文件(TESTMERCHANT.p12)经过openssl生成的密钥文件TESTMERCHANT.pm 默认密码是 13 PHP端程序下订单程序/** 银联支付* *///wap下订单接口(需要验证签名)public function wap…

【渝粤题库】陕西师范大学210022 学前儿童语言教育 作业(专升本)

《学前儿童语言教育》作业 一、填空题 学前儿童语言教育是研究儿童 的现象、 及其训练和 的一门科学&#xff0c;是学前教育师范院校 的一门应用性科目。学前儿童语言教育目标主要分为三个层次&#xff0c;即语言教育 、 和 。语言教育评价是语言教育 中的一个要素&#xff0c…

【渝粤题库】陕西师范大学292011 初级微观经济学 作业(高起专)

《初级微观经济学》作业 一、填空题 1.微观经济学的研究对象是————————————。 2.需求曲线向————倾斜&#xff0c;表明商品的价格与供给量成————变动。 3.支持价格是政府为了扶植某一行业的生产而规定的该行业产品的——————。 4&#xff0e;>1&…