赛迪网 > IT技术 Java > Java读书频道-中
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

java.util第2部分:更多的实用工具类 (6)

发布时间:2006.06.12 03:15     来源:清华大学出版社    作者:Herbert Schildt 著 张玉清 吴溥峰等 译

16.11 TimerTimerTask

Java 21.3版在java.util中增加了一个有趣又有用的功能部件:提供了提前安排将来某时间要执行任务的能力。支持这项功能的类是TimerTimerTask。使用这些类可以创建一个工作于后台的线程,该线程等待一段指定的时间。当指定的时间到来时,与该线程相连的任务被执行。不同的选项允许安排一个任务重复执行,或安排一个任务在指定的时间运行。尽管永远都可能使用Thread类利用手工方法创建一个在指定的时间执行的任务,但是使用TimerTimerTask却大大简化了这一过程。TimerTimerTask一起工作。Timer是一个用于安排一个将来执行的任务的类。被安排的任务必须是TimerTask的一个实例。因此,为了安排一个任务,首先应该创建一个TimerTask对象,然后使用Timer的一个实例安排执行它。TimerTask实现了Runnable接口;因此它可以被用于创建一个执行线程。它的构造函数如下所示:

TimerTask( )

TimerTask定义了表16-8中的方法。注意run( )是一个抽象方法,这意味着它可以被覆盖。由Runnable接口定义的run( )方法包含了将被执行的程序代码。因此创建一个定时器任务的最简单的办法是扩展TimerTask和重载run( )

16-8 TimerTask 定义的方法

方法 描述

boolean cancel( ) 终止任务。如果任务的执行被阻止了,则返回true;否则返回false

abstract void run( ) 包含了定时器任务的代码

long scheduledExecutionTime( ) 返回被安排最后执行的任务的时间

16 java.util 2 部分:更多的实用工具类 363

一旦任务被创建,它将通过一个类型Timer的对象被安排执行。Timer的构造函数如下:

Timer( )

Timer(boolean DThread)

第一种形式创建一个以常规线程方式运行的Timer对象。第二种形式当DThreadtrue时,使用后台进程线程。只要剩下的程序继续运行,后台进程线程就会执行。由Timer定义的方法列在表16-9中。

16-9 Timer 定义的方法

方法 描述

void cancel( ) 终止定时器线程

void schedule(TimerTask TTask, long wait) TTask被安排在由参数wait传递的周期之后执行

wait参数的单位是毫秒

void schedule(TimerTask TTask, long wait,

long repeat)

TTask被安排在由参数wait传递的周期之后执行。

任务随后在由repeat指定的时间间隔重复执行。参数waitrepeat的单位都是毫秒

void schedule(TimerTask TTask, Date targetTime) TTask被安排在由targetTime指定的时间执行

void schedule(TimerTask TTask,

Date targetTime, long repeat)

TTask被安排在由targetTime指定的时间执行。接着任务在由repeat传递的时间间隔重复执行。

repeat参数的单位是毫秒

void scheduleAtFixedRate(TimerTask TTask,long wait, long repeat)

TTask被安排在经过由参数wait传递的周期之后执行。任务随后在由repeat指定的时间间隔重复执行。参数waitrepeat的单位都是毫秒。每一次重复的时间是和第一次执行,而不是和前一次执行的时间有关。因此执行的总速度是固定的void scheduleAtFixedRate(TimerTask TTask,Date targetTime, long repeat)TTask被安排在由targetTime指定的时间执行。任务随后在由repeat指定的时间间隔重复执行。参数repeat的单位是毫秒。每一次重复的时间是和第一次执行,而不是和前一次执行的时间有关。因此执行的总速度是固定的一旦Timer被创建,将可以通过调用创建的Timerschedule( )方法来安排任务。正如表16-9所示的那样,这里有几种schedule( )方法的形式,这些形式允许用各种办法来安排任务。如果创建了一个非后台进程任务,当你的程序结束时,你可能希望调用cancel( )方法来结束任务。如果不这样做的话,你的程序可能被“挂起”一个周期时间。下面的程序说明了TimerTimerTask。该程序定义了一个定时器任务,它的run( )方法显示消息“Timer task executed.”。该任务被安排在最初的一秒延时后,恰好半秒钟运行一次。

// Demonstrate Timer and TimerTask.

import java.util.*;

class MyTimerTask extends TimerTask {

public void run() {

System.out.println("Timer task executed.");

}

}

class TTest {

public static void main(String args[]) {

MyTimerTask myTask = new MyTimerTask();

Timer myTimer = new Timer();

/* Set an initial delay of 1 second,

then repeat every half second.

*/

myTimer.schedule(myTask, 1000, 500);

try {

Thread.sleep(5000);

} catch (InterruptedException exc) {}

myTimer.cancel();

}

}

16.12 java.util.zip

java.util.zip包提供了读、写流行的ZIP格式或GZIP格式文件的能力。ZIPGZIP都输入和输出可用的数据流。另外一些类实现了用于压缩和解压缩的ZLIB算法。

16.13 java.util.jarjava.util.jar包提供了读、写Java存档(JAR)文件的能力。在第25章将会看到,JAR文件被用来包含被称作Java Beans的软件及任何相关文件

<<上一页 1 2 3 4 5 6


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
[政务][电信][金融][农业][制造业][中小企业]
[CIO][ERP][协同][IT管理][中间件][电子商务]
[政策][地方][专家][评估][辞典][博客][社区]
· 专题:一路畅通构想曲——让出行不再遭遇堵车
· CIO工作亲历:企业ERP选型不能忽视"选人关"
· 综述:信息化建设给中国监狱带来的各种变化
· 金融业风险管理和法规遵从有五点需考虑的因素
· 保险业CIO关注:该如何建立统一高效的CRM体系
· 调查显示:多数CIO对IT规划仍存在困惑和误解
  博客·论坛 ·曾剑秋·项立刚·Java学习·网管