schedule()和scheduleAtFixedRate()方法都可以通过指定任务的开始时间、延迟时间或者任务的持续时间来调度任务。两者的区别在于,当某个任务因为某种原因出现一段时间的延迟后,之后所有由schedule()方法调度的任务都会顺延;而之后所有由scheduleAtFixedRate()方法调度的任务会自动根据一个固定的频率来调整。也就是说,在相同的一段时间内,如果用schedule()方法执行10次的任务,用scheduleAtFixedRate()方法调度可能会执行9次或是11次。
另外,TimerTask类提供了cancel()方法用于在任务执行的过程当中强行终止任务,该方法是从Runnable接口类继承来的。一旦终止了该任务,那么它将退出任务调度。在任何时间调用cancel()方法都是有效的,即使该任务还一次都没有执行过。
2.4.3 java.io包
CLDC的java.io包是J2SE的子集,只提供了相当有限的8位输入/输出功能。而且,一些抽象类,像FilerInputStream等,也被省掉了,原先从这些抽象类继承的类直接从它们的父类InputStream和OutputStream继承。这里只表2.5给出了CLDC中java.io包中的类及类的继承关系。


CLDC1.0 java.io包中的类及类的继承关系
对于CLDC,InputStream和OutputStream类是读写数据的唯一的途径。无论是本地文件或是网络连接的读写都要通过这两个类来完成。一个典型的例子就是:MIDlet提供了本地存储方式——RecordStore,它以字节数组的形式存储内容。MIDlet需要把要存的内容转换成ByteArrayInputStream或是DataInputStream对象格式来储存。同样的,调用在javax.microedition.rms中操作RecordStore的API所返回的也是ByteArrayOutputStream或是DataOutputStream对象。