- 浏览: 790797 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (151)
- Java-Basic (25)
- Java-NIO (3)
- Java-Mybatis (4)
- Java-Web (15)
- DB-oracle (18)
- DB-mysql (29)
- DB-sqlserver (4)
- DB-postgresql (2)
- DB-SQLite (1)
- DB-H2 (6)
- Tool-Flex (1)
- Tool-Ftp (3)
- Tool-Maven (5)
- Netlink (2)
- Web-CSS (3)
- Web-UI (1)
- Web-JavaScript (8)
- NoSQL (3)
- Mina (2)
- TCPUDP (2)
- SEO (2)
- Network (6)
- DataStructure (1)
- Website-test (1)
- Tool-Excel (1)
- Java-Concurrent (2)
- 前辈指点 (0)
- Eclipse plugins (1)
- DB-NoSQL (1)
最新评论
-
18322696278:
My97DatePicker控件显示时分秒 -
dllhenu:
你好,我让ol加载tiptip,但是tiptip没有在点所在的 ...
OpenLayers下使用Jquery tooltip(Qtip)让要素信息自动显示或隐藏 -
boonya:
你所说的是网页上选择文件路径吧,用ServletFileUpl ...
Apache提供的FTP文件上传下载 -
淡然若水:
我也是用这种方法啊。。。但是FileInputStream i ...
Apache提供的FTP文件上传下载 -
liuweihug:
json序列化反序列化插件-json2.js 介绍和使用 - ...
Json 数据反序列化为Java对象
1、编写任务
2、设置调用简单任务
3、编写复杂任务调度策略的范围接口
4、实现任务策略接口
5、调度业务调用
6、web配置项目启动执行任务
---可以设置一个Servlet在项目启动时启动定时任务,web.xml配置如下:
在servlet的配置当中,<load-on-startup>5</load-on-startup>的含义是:
标记容器是否在启动的时候就加载这个servlet。
当值为0或者大于0时,表示容器在应用启动时就加载这个servlet;
当是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载。
正数的值越小,启动该servlet的优先级越高。
7、注意事项
每一个Timer仅对应唯一一个线程。
Timer不保证任务执行的十分精确。
Timer存在线程安全隐患。
package com.boonya.timer; import java.text.SimpleDateFormat; import java.util.Date; import java.util.TimerTask; /** * myTask.java * 功能:编写定时执行的任务 * @author boonya * @version 1.0 2012-10-11 */ public class myTask extends TimerTask{ @Override public void run() { // TODO Auto-generated method stub Date mydate=new Date(); String runTime=new SimpleDateFormat("yyy-MM-dd hh:mm:ss").format(mydate); System.out.println(runTime+"定时任务正在执行........."); } }
2、设置调用简单任务
package com.boonya.timer; import java.util.Timer; /** * RunMyTask.java * 功能:调用定时执行的任务 * @author boonya * @version 1.0 2012-10-11 */ public class RunMyTask { public static void execute(){ Timer timer = new Timer(); //一天执行一次 /*Date start=new Date(); start.setDate(start.getDate()+1); start.setHours(2); start.setMinutes(0); start.setSeconds(0); long l = start.getTime()-System.currentTimeMillis(); timer.schedule(new myTask(), l, 24*1000*60*60);*/ //1分钟执行一次的任务 timer.schedule(new myTask(), 60000, 60*1000);//task,delay,peroid } }
3、编写复杂任务调度策略的范围接口
public interface SchedulerService { void schedule(TimerTask task, long delay); void schedule(TimerTask task, long delay, long period); void schedule(TimerTask task, Date firstTime, long period); void scheduleAtFixedRate(TimerTask task, long delay, long period); void scheduleAtFixedRate(TimerTask task, Date firstTime, long period); }
4、实现任务策略接口
public class SchedulerServiceImpl implements SchedulerService { //延迟多长时间调用一次就陷入线程等待 @Override public void schedule(TimerTask task, long delay) { new Timer().schedule(task, delay); } //延迟delay微秒调用一次,以后每隔period微秒执行一次 @Override public void schedule(TimerTask task, long delay, long period) { new Timer().schedule(task, delay, period); } //从firstTime开始执行,每隔period微秒执行一次 @Override public void schedule(TimerTask task, Date firstTime, long period) { new Timer().scheduleAtFixedRate(task, firstTime, period); } //延迟delay微秒调用一次,以后每隔period微秒执行一次:方法重在执行频率 @Override public void scheduleAtFixedRate(TimerTask task, long delay, long period) { new Timer().scheduleAtFixedRate(task, delay, period); } //从firstTime开始执行,每隔period微秒执行一次:方法重在执行频率 @Override public void scheduleAtFixedRate(TimerTask task, Date firstTime, long period) { new Timer().scheduleAtFixedRate(task, firstTime, period); } } //注:建议只使用schedule方法。
5、调度业务调用
public static void main(String[] args) { SchedulerService service=new SchedulerServiceImpl(); // execute one time then the thread turn to wait status service.schedule(new TemplateTask(), 5*1000); // start from now every 5 seconds execute my task // service.schedule(new TemplateTask(), new Date(), 5*1000); //delay 5 seconds then as 5 seconds time-step to execute my task // service.schedule(new TemplateTask(), 5*1000, 5*1000); // service.scheduleAtFixedRate(new TemplateTask(), new Date(), 5*1000); // service.scheduleAtFixedRate(new TemplateTask(), 5*1000, 5*1000); }
6、web配置项目启动执行任务
---可以设置一个Servlet在项目启动时启动定时任务,web.xml配置如下:
<servlet> <description>This is the description of my J2EE component</description> <display-name>This is the display name of my J2EE component</display-name> <servlet-name>ReadUserListHandler</servlet-name> <servlet-class>com.boonya.test.servlet.ReadUserListHandler</servlet-class> <load-on-startup>5</load-on-startup> </servlet> <servlet-mapping> <servlet-name>ReadUserListHandler</servlet-name> <url-pattern>/servlet/ReadUserListHandler</url-pattern> </servlet-mapping>注: <load-on-startup>说明,
在servlet的配置当中,<load-on-startup>5</load-on-startup>的含义是:
标记容器是否在启动的时候就加载这个servlet。
当值为0或者大于0时,表示容器在应用启动时就加载这个servlet;
当是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载。
正数的值越小,启动该servlet的优先级越高。
7、注意事项
每一个Timer仅对应唯一一个线程。
Timer不保证任务执行的十分精确。
Timer存在线程安全隐患。
发表评论
-
cache4jJava对象缓存使用示例
2013-10-28 18:16 01、下载cache4j http://source ... -
Java DES加密工具
2013-10-16 11:19 24481、DES算法的原理 DES 使用一个 56 位的密钥以及附加 ... -
Json 数据反序列化为Java对象
2013-08-29 00:12 11549前言:我们在项目中经常用到的是Json格式的数据,如果是将一个 ... -
BeanUtils实现对Java对象的拷贝
2013-08-06 17:26 9052场景描述:两个对象字段一样,怎么简便地赋值呢?假设有两个实体类 ... -
Jackson时间格式及属性忽略
2013-05-17 13:16 14811、Date时间格式 当使用jackson在处理时间时,默认是 ... -
两种将Java对象转成JSON格式的方式
2013-05-16 13:14 2745前言:Java中数据传递到前端的时候很多情况都是JSON格式数 ... -
怎样比较两个集合是否相等
2013-05-16 10:49 6903受这篇文章启发:http://rijin.iteye.com/ ... -
Java字符串时间转Date工具
2013-04-27 00:13 1838注意:java.util.Date是无时区概念的,不用考虑时区 ... -
Java中变量的线程安全问题
2013-04-22 13:38 1792静态变量:线程非安全 ... -
项目中加入声音文件
2013-03-14 18:22 0Java web how to play audio? --- ... -
resteasy
2013-03-13 18:36 01、访问方式 PUT POST GET 2、下载资源ja ... -
Java中使用C3P0连接池
2013-03-13 00:25 221201、c3p0.properties c3p0.driverCl ... -
Jsoup解析URL或网页内容开发指南
2013-03-04 10:51 2434参考开发示例文档:http://www.open-open.c ... -
Java中线程池使用
2013-02-27 23:31 960摘自infoQ:http://www.infoq.com/cn ... -
Java中线程池使用
2013-02-27 23:27 21、合理使用线程池的好 ... -
Java中volatile实现线程间变量共享
2013-02-27 23:03 2362volatile变量自身具有下列特性: 可见性。对一个vol ... -
Java中Synchronized的使用注意事项
2013-02-26 14:21 1207转自:http://www.blogjava.net/free ... -
Java实现mysql存储过程调用
2013-02-19 21:41 1260------------------------------- ... -
Java多线程编程#线程等待机制
2013-02-16 15:37 10611、最佳的模型是:生产者-消费者 package com.b ... -
Java多线程编程#线程同步示例
2013-02-16 13:34 13741、线程不同步 在同一个进程中的线程都是独立运行的,线程之间会 ...
相关推荐
Android Timer TimerTask Handler 三者结合实现 数据更新与View更新的同步。 一个不错的机制。
timerTask实现每天定时一段时间内执行定时任务,这个是自己写的代码,有些和我的项目有关,可以删掉,但是其主要的都在里面,我写了注释。
利用jdk中的timer和timertask来实现,每天定时执行的任务。
通过java的TimerTask与Timer设计时间监控,写了一个测试类,帮助新人学习。
Timer与TimerTask(计时器)
下面是一个在Android中使用定时器Timer和TimerTask的启动,停止,暂停,继续等操作的demo。 需要注意的问题主要有两点: 1、Timer和TimerTask在调用cancel()取消后不能再执行 schedule语句 2、只能在UI主线程中更新...
1.实现Push推送demo,用AlarmManager实现全局定时和Timer、TimerTask两种方式分别实现定时服务状态栏Notification消息提醒! 2.该功能经过测试,只需要从服务上定时获取到提醒消息即可,稍做修改,即可使用。 3.可以...
Timer和TimerTask的使用 关于java函数中timer类的相关代码 和使用
NULL 博文链接:https://zhouhaitao.iteye.com/blog/1199750
调度可以用 Timer 【调用 schedule() 或者 scheduleAtFixedRate() 方法实现】或者 ScheduledExecutorService 【结合工作中其它的需求,笔者选用此】 ScheduledExecutorService的初始化(线程池):
完整示例,直接导入工程即可实现,欢迎各位下载,和评论,谢谢
今天讲下如何定时执行后台任务。 主要使用到TimerTask,相信大家都用过,大家可以看下TimerTask的源码。这里是一个简单的TimerTaskDemo。
本文首先设计一个单次定时器Timer+TimerTask,然后再次基础上设计一个循环定时器。
NULL 博文链接:https://fly2000.iteye.com/blog/292847
在Java中,Timer和TimerTask是两个经常用来实现定时器的类。这两个类使用起来非常方便,可以完成我们对定时器的绝大多数需求。 Timer是一种定时器工具,用来在一个后台线程计划执行指定任务,并可以按计划一次或反复...
ICE_Timer and TimerTask相关
Java计时器Timer和TimerTask用法总结
本文档主要讲述的是Java中的Timer和TimerTask的使用;Timer是一个定时器类,通过该类可以为指定的定时...TimerTask类是一个定时任务类,该类实现了Runnable接口,而且是一个抽象类。希望本文档会给有需要的朋友带来帮助
提供免费下载 Timer控件定时更新UpdatePanel - DemoVS2010版.zip
java类Timer和TimerTask的使用.doc