- 浏览: 798658 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (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 25161、DES算法的原理 DES 使用一个 56 位的密钥以及附加 ... -
Json 数据反序列化为Java对象
2013-08-29 00:12 11599前言:我们在项目中经常用到的是Json格式的数据,如果是将一个 ... -
BeanUtils实现对Java对象的拷贝
2013-08-06 17:26 9093场景描述:两个对象字段一样,怎么简便地赋值呢?假设有两个实体类 ... -
Jackson时间格式及属性忽略
2013-05-17 13:16 15251、Date时间格式 当使用jackson在处理时间时,默认是 ... -
两种将Java对象转成JSON格式的方式
2013-05-16 13:14 2791前言:Java中数据传递到前端的时候很多情况都是JSON格式数 ... -
怎样比较两个集合是否相等
2013-05-16 10:49 6966受这篇文章启发:http://rijin.iteye.com/ ... -
Java字符串时间转Date工具
2013-04-27 00:13 1883注意:java.util.Date是无时区概念的,不用考虑时区 ... -
Java中变量的线程安全问题
2013-04-22 13:38 1840静态变量:线程非安全 ... -
项目中加入声音文件
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 221871、c3p0.properties c3p0.driverCl ... -
Jsoup解析URL或网页内容开发指南
2013-03-04 10:51 2485参考开发示例文档:http://www.open-open.c ... -
Java中线程池使用
2013-02-27 23:31 1002摘自infoQ:http://www.infoq.com/cn ... -
Java中线程池使用
2013-02-27 23:27 21、合理使用线程池的好 ... -
Java中volatile实现线程间变量共享
2013-02-27 23:03 2413volatile变量自身具有下列特性: 可见性。对一个vol ... -
Java中Synchronized的使用注意事项
2013-02-26 14:21 1251转自:http://www.blogjava.net/free ... -
Java实现mysql存储过程调用
2013-02-19 21:41 1299------------------------------- ... -
Java多线程编程#线程等待机制
2013-02-16 15:37 11041、最佳的模型是:生产者-消费者 package com.b ... -
Java多线程编程#线程同步示例
2013-02-16 13:34 14161、线程不同步 在同一个进程中的线程都是独立运行的,线程之间会 ...
相关推荐
总结起来,通过 `TimerTask` 和 `Timer` 类,我们可以轻松地在 Java 应用程序中实现周期性的定时任务。结合 `Calendar` 类,我们可以精确地控制任务的执行时间,确保它每天都在特定时间段内运行。在实际项目中,根据...
在Java编程语言中,`TimerTask`和`Timer`是两个关键类,它们用于实现定时任务的调度。这两个类属于`java.util`包,为开发者提供了执行周期性或一次性任务的能力。下面我们将深入探讨如何利用`TimerTask`执行每日定时...
`Timer`和`TimerTask`是Java中非常实用的类,它们为开发者提供了简单易用的方式来实现定时任务。然而,需要注意的是,在多线程环境中使用`Timer`时要特别小心,因为默认情况下`Timer`是单线程的,这可能会导致任务...
在Java世界中,任务调度是十分重要的,Spring框架提供了多种定时任务实现方式,其中包括Quartz和Timer。Quartz是一款开源的作业调度框架,而Timer是Java标准库中的一个类,用于执行定时任务。这两个工具都能帮助...
本文将结合实际案例探讨如何使用Timer、TimerTask以及ScheduledFuture来实现定时任务,并着重讲解它们的退出机制。 首先,我们来看Timer和TimerTask的使用。Timer类是一个用于调度定时任务的工具,它使用单个后台...
2. 创建定时调度业务类,例如`TaskService`,它继承自`TimerTask`,并实现`run()`方法: ```java public class TaskService extends TimerTask { private int count = 1; public void run() { System.out....
`Quartz`和`Timer`都是Java中实现定时任务的工具,各有特点和适用场景。 `Timer`是Java标准库中的类,位于`java.util`包下,提供了定时任务的基本功能。`Timer`创建一个后台线程,可以安排单次或周期性的任务执行。...
Java定时任务的实现是软件开发中常见的需求,用于在特定时间执行特定的业务逻辑,例如数据备份、报表生成等。本文将详细介绍两种常用的Java定时任务实现方式:Timer类和Spring框架的Quartz调度器。 首先,第一种...
通过这种方式,`Timer`和`TimerTask`可以在不干扰主要业务流程的情况下,优雅地处理后台的定时任务,提升系统的整体效率。理解并熟练运用这两个类,对于开发高效、稳定的Java应用程序至关重要。
在Java编程语言中,`Timer`和`TimerTask`是两个重要的类,它们用于实现定时任务的调度。这个"TimerTask_Demo.zip"文件提供了一个简单的示例,演示了如何利用这两个类来创建一个每日自动执行的任务。下面将详细介绍`...
我们可以使用 Java 中的 Timer 类来实现定时任务,例如使用 TimerTask 来执行定时任务。 在 PPTX 文件中,我们提供了一个简单的示例代码,展示如何使用 Java Servlet 来实现网页定时刷新并跳转。这个示例代码包括...
在"TaskDemo"这个文件中,可能包含了使用`Timer`和`TimerTask`实现的具体示例代码,例如定义了定时打印消息、执行数据库操作或其他业务逻辑的任务。通过查看和学习这个示例,你可以更好地理解`Timer`类的工作原理和...
本文将深入探讨如何使用Java标准库中的`java.util.Timer`和`java.util.TimerTask`来实现定时任务。 ### 原理详解 在Java中,`java.util.Timer`类提供了调度定时任务的功能,而`java.util.TimerTask`则是执行这些...
在编程领域,定时器(Timer)是一个...在实际项目中,可以根据需求调整Timer的参数,以满足不同场景下的定时任务需求。提供的压缩包文件"Timer完成"可能包含更详细的代码实现和示例,读者可以下载后进一步学习和研究。
在Spring框架中,有时我们需要实现基于时间触发的事件任务,例如定期执行某些...对于简单的定时任务,`java.util.Timer`和`TimerTask`可能是合适的;对于更复杂的需求,Spring的定时任务支持提供了更多的灵活性和控制。
开发者可以通过设置`setOnPageChangeListener()`监听滑动事件,例如获取当前显示的页面索引,以便进行其他业务逻辑处理。 4. **自动切换**:要实现自动切换,我们可以使用`java.util.Timer`和`java.lang.Handler`。...
2. **Java Timer/TimerTask**: 对于Java开发者,可以使用内置的Timer和TimerTask类来创建定时任务。这些任务可以是任何实现了Runnable接口的对象,因此可以灵活地处理数据刷新逻辑。 3. **Spring框架的@Scheduled**...
- 创建`TimerTask`子类:定义一个实现了`run()`方法的类,该方法包含定时任务的业务逻辑。 - 创建`Timer`实例:`Timer timer = new Timer();` - 安排任务:使用`timer.schedule()`方法将`TimerTask`添加到定时器中。...
2. **定时任务**:Java提供了多种方式实现定时任务,如`java.util.Timer`和`TimerTask`,但更推荐使用`java.time`包中的`ScheduledExecutorService`,因为它提供了更精确的定时控制和更好的并发性能。我们可以通过`...