- 浏览: 151645 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
sisi1984117:
cuisuqiang 写道请问你这是写的什么东西?这是每隔一段 ...
JAVA 定时器 信息推送 -
cuisuqiang:
请问你这是写的什么东西?
JAVA 定时器 信息推送 -
yejq:
浏览器还是有差异的 IE9和CHROME18上差异巨大:IE ...
【转】使用Javascript动态创建表格,不同的方法,巨大的运行时间差异! -
yl419440513:
谢谢啦,还真么注意这个呢,上次有个做界面的问我我不清楚呢
【转】关于js中的parseInt的使用
这两个类使用起来非常方便,可以完成我们对定时器的绝大多数需求
Timer类是用来执行任务的类,它接受一个TimerTask做参数
Timer有两种执行任务的模式,最常用的是schedule,它可以以两种方式执行任务:1:在某个时间(Data),2:在某个固定的时间之后(int delay).这两种方式都可以指定任务执行的频率.看个简单的例子:
import java.io.IOException; import java.util.Timer; public class TimerTest { public static void main(String[] args){ Timer timer = new Timer(); timer.schedule(new MyTask(), 1000, 2000);//在1秒后执行此任务,每次间隔2秒,如果传递一个Data参数,就可以在某个固定的时间执行这个任务. while(true){//这个是用来停止此任务的,否则就一直循环执行此任务了 try { int ch = System.in.read(); if(ch-'c'==0){ timer.cancel();//使用这个方法退出任务 } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } static class MyTask extends java.util.TimerTask{ @Override public void run() { // TODO Auto-generated method stub System.out.println("________"); } } }如果你使用的是JDK 5+,还有一个scheduleAtFixedRate模式可以用,在这个模式下,Timer会尽量的让任务在一个固定的频率下运行,举例说明:在上面的例子中,我们想让MyTask在1秒钟后,每两秒钟执行一次,但是因为java不是实时的(其实java实时性很差.....),所以,我们在上个程序中表达的原义并不能够严格执行.如果我们调用的是scheduleAtFixedRate,那么,Timer会尽量让你的Task执行的频率保持在2秒一次.运行上面的程序,假设使用的是scheduleAtFixedRate,那么下面的场景就是可能的:1秒钟后,MyTask 执行一次,因为系统繁忙,之后的2.5秒后MyTask 才得以执行第二次,然后,Timer记下了这个延迟,并尝试在下一个任务的时候弥补这个延迟,那么,1.5秒后,MyTask 将执行的三次."以固定的频率而不是固定的延迟时间去执行一个任务"
果然很方便吧^_^
下面给出一个复杂点的例子,其中告诉大家怎么退出单个TimerTask,怎么退出所有Task
package MyTimerTest; import java.io.IOException; import java.util.Timer; /* * 本类给出了使用Timer和TimerTaske的主要方法,其中包括定制任务,添加任务 * 退出任务,退出定时器. * 因为TimerTask的status域是包级可访问的,所以没有办法在java.util.包外 * 得到其状态,这对编程造成一些不便 .我们不能判断某个Task的状态了. * */ public class TimerTest { public static void main(String[] args) { Timer timer = new Timer(); MyTask myTask1 = new MyTask(); MyTask myTask2 = new MyTask(); myTask2.setInfo("myTask-2"); timer.schedule(myTask1, 1000, 2000); timer.scheduleAtFixedRate(myTask2, 2000, 3000); while (true) { try { byte[] info = new byte[1024]; int len = System.in.read(info); String strInfo = new String(info, 0, len, "GBK");//从控制台读出信息 if (strInfo.charAt(strInfo.length() - 1) == ' ') { strInfo = strInfo.substring(0, strInfo.length() - 2); } if (strInfo.startsWith("Cancel-1")) { myTask1.cancel();//退出单个任务 // 其实应该在这里判断myTask2是否也退出了,是的话就应该break.但是因为无法在包外得到 // myTask2的状态,所以,这里不能做出是否退出循环的判断. } else if (strInfo.startsWith("Cancel-2")) { myTask2.cancel(); } else if (strInfo.startsWith("Cancel-All")) { timer.cancel();//退出Timer break; } else { // 只对myTask1作出判断,偷个懒^_^ myTask1.setInfo(strInfo); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } static class MyTask extends java.util.TimerTask { String info = "^_^"; @Override public void run() { // TODO Auto-generated method stub System.out.println(info); } public String getInfo() { return info; } public void setInfo(String info) { this.info = info; } } }
发表评论
-
【转】Windows 2008 R2下DB2和WAS安装手册
2013-03-15 13:10 780http://wenku.baidu.com/view/d ... -
【转】Java虚拟机(JVM)中的内存设置详解
2013-03-15 11:29 725在一些规模稍大的应用中,Java虚拟机(JVM)的内存设置尤 ... -
【转】文件操作相关
2012-12-20 14:38 750package com; import j ... -
JAVA特殊符号替换
2012-08-21 12:28 2272String Sku = "/\\:*?\ ... -
【转】反斜杠 \替换
2012-08-21 11:25 1133java replaceAll() 方法要用 4 个反斜 ... -
【转】js keycode 列表
2012-08-07 10:37 878keycode 8 = BackSpace BackSp ... -
【转】JAVA.SWT/JFace: SWT类所代表的事件常量
2012-08-06 15:12 1504《Eclipse SWT/JFACE 核心应用》 清华大学出版 ... -
【转】SQL SERVER 与ORACLE常用函数比较
2012-07-23 16:22 962序号 函数功能 SQL Ser ... -
【转】SWT中shell的各种style介绍
2012-06-19 15:49 867BORDER——当只有BORDER ... -
JAVA 定时器 信息推送
2012-05-31 15:33 2285package com.flux.wms.menu.sy ... -
【转】使用JavaScript和DOM动态创建表格
2012-04-19 14:18 1603简介 这篇文章简单介绍了DOM 1.0一些基本而强大的方 ... -
【转】如何摆脱JS糟糕的字符串连接
2012-04-19 14:16 1084一、ECMAScript的字符串是不可变的,即它们的值不能改变 ... -
【转】使用Javascript动态创建表格,不同的方法,巨大的运行时间差异!
2012-04-19 14:15 12392011-07-21 11:26 本来是想测试一下使用Jav ... -
Js获取当前日期时间及其它操作
2012-04-17 16:02 940var myDate = new Date();myDa ... -
【转】常用的System.getProperty()
2012-04-10 14:04 770public class TestSystemproper ... -
【转】修改/删除视图
2011-12-05 13:34 100711.2.3 修改/删除视图 在创建了关系视图vw_emp ... -
【转】org.eclipse.swt.SWTException: Invalid thread access问题解决方法
2011-10-27 15:18 1365/** * 登录成功后执行该方法 */ ... -
【转】Windows2003超级终端的使用方法
2011-10-18 14:54 2045Win2003Server的系统,系统里面默认没有安装超 ... -
【转】关于js中的parseInt的使用
2011-08-17 16:44 713参见: alert(parseInt(09)); ... -
【转】JMF拍照程序的应用
2011-07-19 16:14 1367import javax.swing.*; import ja ...
相关推荐
java类Timer和TimerTask的使用.pdf
java类Timer和TimerTask的使用.doc
Timer和TimerTask的使用 关于java函数中timer类的相关代码 和使用
本文档主要讲述的是Java中的Timer和TimerTask的使用;Timer是一个定时器类,通过该类可以为指定的定时任务进行配置。TimerTask类是一个定时任务类,该类实现了Runnable接口,而且是一个抽象类。希望本文档会给有需要...
在Java中,Timer和TimerTask是两个经常用来实现定时器的类。这两个类使用起来非常方便,可以完成我们对定时器的绝大多数需求。 Timer是一种定时器工具,用来在一个后台线程计划执行指定任务,并可以按计划一次或反复...
JavaTimer和TimerTask实例教程Java开发Java经验技巧共3页.pdf.zip
Java计时器Timer和TimerTask用法总结
本文首先设计一个单次定时器Timer+TimerTask,然后再次基础上设计一个循环定时器。
主要介绍了Java 中Timer和TimerTask 定时器和定时任务使用的例子,非常具有实用价值,需要的朋友可以参考下
主要为大家详细介绍了java定时任务Timer和TimerTask使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本篇文章主要介绍了解析Java中的Timer和TimerTask在Android中的用法,主要介绍了Timer和TimerTask的用法,有需要的可以了解一下。
主要介绍了JAVA Timer和TimerTask的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
不过,标准的调度类 Timer 和 TimerTask 没有足够的灵活性,无法支持通常需要的计划任务类型。在本文中,Java 开发人员 Tom White 向您展示了如何构建一个简单通用的计划框架,以用于执行任意复杂的计划任务。
通过java的TimerTask与Timer设计时间监控,写了一个测试类,帮助新人学习。
下面小编就为大家带来一篇java之Timer和TimerTask简单demo(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
这是Java两种功能的比较。。。里面涉及到一些使用
今天讲下如何定时执行后台任务。 主要使用到TimerTask,相信大家都用过,大家可以看下TimerTask的源码。这里是一个简单的TimerTaskDemo。
主要介绍了 Java 定时器(Timer,TimerTask)详解及实例代码的相关资料,需要的朋友可以参考下
Spring两种定时器实例配置:Java的TimerTask类和OpenSymphony的Quartz。包含5种配置方式:timer普通定时器、timer特定方法定时器、quartz简单定时器、quartz精确定时器、quartz特定方法定时器。简单实用,一看就会。
利用jdk中的timer和timertask来实现,每天定时执行的任务。