- 浏览: 108322 次
- 性别:
- 来自: 厦门
文章分类
最新评论
-
qiqibaba1990:
JAVA与JS的数据交互 -
月氏城下:
为什么是5个,不是9个吗?
JSP五大内置对象 -
mida:
有点文字时不时更好了。
JAVA与JS的数据交互 -
pxx199248:
收藏楼,不错
常用JS驗證
计时器2
- 博客分类:
- JAVA Study
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){
54com.cn
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;
/* JavaScript之家http://www.jorse.cn
* 本类给出了使用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) {
feedom.net
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")) {
feedom.net
myTask2.cancel();
} else if (strInfo.startsWith("Cancel-All")) {
JavaScript之家http://www.jorse.cn
timer.cancel();//退出Timer
break;
} else {
// 只对myTask1作出判断,偷个懒^_^
myTask1.setInfo(strInfo);
}
} catch (IOException e) { // TODO Auto-generated catch block
e.printStackTrace();
}
}
JavaScript之家http://www.jorse.cn
}
static class MyTask extends java.util.TimerTask {
54com.cn
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;
}
}
}
发表评论
-
java.lang.OutOfMemoryError: Java heap space 解决方法
2012-09-25 14:40 848java.lang.OutOfMemoryError: ... -
单例模式
2012-09-13 17:26 751概念: java中单例模 ... -
设计模式
2012-09-13 17:25 716设计模式主要分三个类型:创建型、结构型和行为型。 其中创建型有 ... -
小数点
2012-08-27 16:46 789保留两位小数{方法一:{ double c=3.154 ... -
ngnix.conf配置
2012-07-18 09:20 808# 开多少进程 worker_processes 2; ... -
多维数组
2012-07-12 10:32 699java语言中,数组是一种 ... -
取得下一年时间
2012-07-05 16:16 718Calendar cal = Calendar.get ... -
JSP五大内置对象
2012-07-04 16:00 1285一、Request对象方法 ... -
反射机制学习
2012-05-31 10:50 637JAVA语言中的反射机制: 在Java 运行时 环 ... -
class生成jar包
2012-05-23 16:10 842进入dos操作符窗口 cd进入要打成jar包的class文件 ... -
读取src下properties配置
2012-05-09 10:42 700try { String path = getClas ... -
ibatis与hibernate的区别
2012-04-25 09:14 734Hibernate简介Hibernate是一个开放源代码的对象 ... -
iBATIS教程之快速入门浅析
2012-04-24 17:01 661iBATIS教程要从iBATIS的概 ... -
tomcat外部启动项目
2012-04-13 15:12 858server.xml <Context pa ... -
防止跨域提交表单
2012-04-11 14:47 814public static boolean validate( ... -
Excel操作 >> 导入
2012-04-09 15:28 1120/** * 導入文件(excel) * @auth ... -
Excel操作 >> 导出
2012-04-09 15:25 1135ExcelBean.java public class Ex ... -
計時器
2012-03-31 17:28 728所有类型的 Java 应用程序一般都需要计划重复执行的任务。企 ... -
根据url读取数据并解析(json)
2012-03-30 16:23 1114/** * @param args * @thro ... -
取URL对应的资源
2012-03-30 15:57 739认识IP、认识URL是进行网络编程的第一步。java.net. ...
相关推荐
本人原创VB套装(计时器2个、时钟2个) 欢迎下载!
数电课程设计-30秒倒计时器 (2).pdf数电课程设计-30秒倒计时器 (2).pdf数电课程设计-30秒倒计时器 (2).pdf数电课程设计-30秒倒计时器 (2).pdf数电课程设计-30秒倒计时器 (2).pdf数电课程设计-30秒倒计时器 (2).pdf...
篮球三十秒 计时电路倒计时器设计报告.pdf篮球三十秒 计时电路倒计时器设计报告.pdf篮球三十秒 计时电路倒计时器设计报告.pdf篮球三十秒 计时电路倒计时器设计报告.pdf篮球三十秒 计时电路倒计时器设计报告.pdf篮球...
cisco计时器配置cisco计时器配置cisco计时器配置cisco计时器配置cisco计时器配置
秒表类(MyStopWatch) 功能: 1.启动计时器 2.停止计时器 3.暂停计时 4.恢复被暂停的秒表 5.分段计时
手眼协调是一种眼睛和手一起工作执行一项任务的能力,反应计时器电路能够测量一个 人在看见一种视觉刺激后,手的响应有多快。 实验要求: 1. 基本部分 (1)电路有三个输入按键:clear,start 和 stop,使用一个 ...
基于labview计时器,计时器,可显示时、分秒、毫秒.vi
本课程设计是脉冲数字电路的简单应用,设计了篮球竞赛24秒计时器。此计时器功能齐全,可以直接清零、启动、暂停和连续以及具有光电报警功能,同时应用了七段数码管来显示时间。此计时器有了启动、暂停和连续功能,...
PPT计时器PPT计时器PPT计时器PPT计时器PPT计时器PPT计时器
一个boss时间计时器
用于比赛计时、倒计时。倒计时器用于面向参会人员全屏显示倒计时。应用场合:干部述职、竞聘演讲、辩论赛等计时。
LabVIEW计时器可以设置多少秒的条件
倒计时器
计时器.exe计时器.exe计时器.exe计时器.exe计时器.exe计时器.exe计时器.exe计时器.exe计时器.exe计时器.exe计时器.exe计时器.exe计时器.exe计时器.exe计时器.exe计时器.exe计时器.exe计时器.exe计时器.exe计时器.exe...
数电课程设计报告_30秒倒计时器.pdf数电课程设计报告_30秒倒计时器.pdf数电课程设计报告_30秒倒计时器.pdf数电课程设计报告_30秒倒计时器.pdf数电课程设计报告_30秒倒计时器.pdf数电课程设计报告_30秒倒计时器.pdf...
1-99分钟倒计时计数计时器60进制计数器倒计时定时器等6个计时器Multisim仿真实例
30秒计时器flash。可以插入ppt中的
简单计时器 开始/继续 清空 暂停
html5 LED计时器_LED倒计时器样式特效 html5 LED计时器_LED倒计时器样式特效 html5 LED计时器_LED倒计时器样式特效
倒计时计时器.fla 这是一个flash的倒计时计时器 简单 一个倒计时的表