免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2716 | 回复: 0
打印 上一主题 下一主题

Java里timer执行定时任务 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-05-14 08:12 |只看该作者 |倒序浏览
java定时义务Timer 关于定时义务, 似乎跟时间操作的联络并不是很大, 但是前面既然提到了定时义务, 索性在这里一起处置了。 设置定时义务很简单, 用Timer类就搞定了。 一、延时执行首先, 我们定义一个类, 给它取个名字叫TimeTask, 我们的定时义务, 就在这个类的main函数里执行。 代码如下:
  package test;
  import java. util. Timer;
  public class TimeTaskTest {
  public static void main(String[] args){ Timer timer = new Timer();
  timer. schedule(new Task(),  60 * 1000);
  }
  }
  解释一下上面的代码。 上面的代码完成了这样一个功用, 当TimeTask顺序启动以后, 过一分钟后执行某项义务。 很简单吧:先new一个Timer对象, 然后调用它的schedule方法, 这个方法有四个重载的方法, 这里我们用其中一个,
  public void schedule(TimerTask task, long delay)
  首先, 第一个参数第一个参数就是我们要执行的义务。 这是一个TimerTask对象, 确切点说是一个完成TimerTask的类的对象, 因为TimerTask是个笼统类。 上面的代码里 面, Task就是我们本人定义的完成了TimerTask的类, 因为是在同一个包外面, 所以没有显性的import进来。 Task类的代码如下
  package test;
  import java. util. TimerTask;
  public class Task extends TimerTask { public void run()
  {
  System. out. println("定时义务执行";
  }
  }
  我们的Task必需完成TimerTask的方法run, 要执行的义务就在这个run方法外面, 这里, 我们只让它往控制台打一行字。 第二个参数第二个参数是一个long型的值。 这是延迟的时间, 就是从顺序末尾以后, 再过多少时间来执行定时义务。 这个long型的值是毫秒数, 所以前面我们的顺序外面, 过一分钟后执行用的参数值就是 60 * 1000。 二、循环执行设置定时义务的时候, 往往我们需要重复的执行这样义务, 每隔一段时间执行一次, 而上面的方法是只执行一次的, 这样就用到了schedule方法的是另一个重载函数public void schedule(TimerTask task, long delay, long period)
  前两个参数就不用说什么了, 最后一个参数就是距离的时间, 又是个long型的毫秒数(看来java里触及到时间的, 跟这个long是脱不了干系了), 比方我们希望上面的义务从第一次执行后, 每个一分钟执行一次, 第三个参数值赋60 * 1000就ok了。 三、指定执行时间既然号称是定时义务, 我们一定希望由我们来指定义务指定的时间, 显然上面的方法就不中用了, 因为我们不知道顺序什么时间末尾运转, 就没办法确定需要延时多少。 没关系, schedule四个重载的方法还没用完呢。 用上面这个就OK了:
  public void schedule(TimerTask task, Date time)
  比方, 我们希望定时义务2006年7月2日0时0分执行, 只要给第二个参数传一个时间设置为2006年7月2日0时0分的Date对象就可以了。 有一种情况是, 可能我们的顺序启动的时候, 已经是2006年7月3日了, 这样的话, 顺序一启动, 定时义务就末尾执行了。 schedule最后一个重载的方法是public void schedule(TimerTask task, Date firstTime, long period)
  没必要说什么了吧四、j2ee中的定时义务在实际的项目中, 往往定时义务需要对web工程中的资源停止操作, 这样一来, 用上面的单个顺序的方式可能就有点力不从心了, 因为很多web工程的资源它操作不到。 处置的办法是, 使用Servlet, 把执行定时义务的那些代码放到Servlet的init()函数里就可以了, 这个easy, 就没有必要再写示例代码了吧文章由 suyin.tk 淘宝缩阴产品排行榜 整理,收集辛苦,希望能保留出处。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP