|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.util
类 Timer
java.lang.Object java.util.Timer
-
public class Timer
- extends Object
一种线程设施,用于安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行。
与每个 Timer 对象相对应的是单个后台线程,用于顺序地执行所有计时器任务。计时器任务应该迅速完成。如果完成某个计时器任务的时间太长,那么它会“独占”计时器的任务执行线程。因此,这就可能延迟后续任务的执行,而这些任务就可能“堆在一起”,并且在上述令人讨厌的任务最终完成时才能够被快速连续地执行。
对 Timer 对象最后的引用完成后,并且 所有未处理的任务都已执行完成后,计时器的任务执行线程会正常终止(并且成为垃圾回收的对象)。但是这可能要很长时间后才发生。默认情况下,任务执行线程并不作为守护线程 来运行,所以它能够阻止应用程序终止。如果调用方想要快速终止计时器的任务执行线程,那么调用方应该调用计时器的 cancel 方法。
如果意外终止了计时器的任务执行线程,例如调用了它的 stop 方法,那么所有以后对该计时器安排任务的尝试都将导致 IllegalStateException,就好像调用了计时器的 cancel 方法一样。
此类是线程安全的:多个线程可以共享单个 Timer 对象而无需进行外部同步。
此类不 提供实时保证:它使用 Object.wait(long) 方法来安排任务。
实现注意事项:此类可扩展到大量同时安排的任务(存在数千个都没有问题)。在内部,它使用二进制堆来表示其任务队列,所以安排任务的开销是 O(log n),其中 n 是同时安排的任务数。
实现注意事项:所有构造方法都启动计时器线程。
- 从以下版本开始:
- 1.3
- 另请参见:
-
TimerTask
,Object.wait(long)
构造方法摘要 | |
---|---|
Timer() 创建一个新计时器。 |
|
Timer(boolean isDaemon) 创建一个新计时器,可以指定其相关的线程作为守护程序运行。 |
|
Timer(String name) 创建一个新计时器,其相关的线程具有指定的名称。 |
|
Timer(String name, boolean isDaemon) 创建一个新计时器,其相关的线程具有指定的名称,并且可以指定作为守护程序运行。 |
方法摘要 | |
---|---|
void |
cancel() 终止此计时器,丢弃所有当前已安排的任务。 |
int |
purge() 从此计时器的任务队列中移除所有已取消的任务。 |
void |
schedule(TimerTask task, Date time) 安排在指定的时间执行指定的任务。 |
void |
schedule(TimerTask task, Date firstTime, long period) 安排指定的任务在指定的时间开始进行重复的固定延迟执行。 |
void |
schedule(TimerTask task, long delay) 安排在指定延迟后执行指定的任务。 |
void |
schedule(TimerTask task, long delay, long period) 安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。 |
void |
scheduleAtFixedRate(TimerTask task, Date firstTime, long period) 安排指定的任务在指定的时间开始进行重复的固定速率执行。 |
void |
scheduleAtFixedRate(TimerTask task, long delay, long period) 安排指定的任务在指定的延迟后开始进行重复的固定速率执行。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
Timer
public Timer()
Timer
public Timer(boolean isDaemon)
- 创建一个新计时器,可以指定其相关的线程作为守护程序运行。如果计时器将用于安排重复的“维护活动”,则调用守护线程,在应用程序运行期间必须调用守护线程,但是该操作不应延长程序的生命周期。
Timer
public Timer(String name)
-
创建一个新计时器,其相关的线程具有指定的名称。相关的线程不 作为守护程序运行。
- 参数:
-
name
- 相关线程的名称。 - 抛出:
-
NullPointerException
- 如果 name 为 null。 - 从以下版本开始:
- 1.5
- 另请参见:
-
Thread.getName()
,Thread.isDaemon()
Timer
public Timer(String name, boolean isDaemon)
-
创建一个新计时器,其相关的线程具有指定的名称,并且可以指定作为守护程序运行。
- 参数:
-
name
- 相关线程的名称。 -
isDaemon
- 如果应该将相关的线程作为守护程序运行,则为 true。 - 抛出:
-
NullPointerException
- 如果 name 为 null。 - 从以下版本开始:
- 1.5
- 另请参见:
-
Thread.getName()
,Thread.isDaemon()
方法详细信息 |
---|
schedule
public void schedule(TimerTask task, long delay)
- 安排在指定延迟后执行指定的任务。
-
- 参数:
-
task
- 所要安排的任务。 -
delay
- 执行任务前的延迟时间,单位是毫秒。 - 抛出:
-
IllegalArgumentException
- 如果 delay 是负数,或者 delay + System.currentTimeMillis() 是负数。 -
IllegalStateException
- 如果已经安排或取消了任务,或者已经取消计时器。
schedule
public void schedule(TimerTask task, Date time)
- 安排在指定的时间执行指定的任务。如果此时间已过去,则安排立即执行该任务。
-
- 参数:
-
task
- 所要安排的任务。 -
time
- 执行任务的时间。 - 抛出:
-
IllegalArgumentException
- 如果 time.getTime() 是负数。 -
IllegalStateException
- 如果已经安排或取消了任务,已经取消了计时器,或者计时器线程已终止。
schedule
public void schedule(TimerTask task, long delay, long period)
-
安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。以近似固定的时间间隔(由指定的周期分隔)进行后续执行。
在固定延迟执行中,根据前一次执行的实际执行时间来安排每次执行。如果由于任何原因(如垃圾回收或其他后台活动)而延迟了某次执行,则后续执行也将被延迟。从长期来看,执行的频率一般要稍慢于指定周期的倒数(假定 Object.wait(long) 所依靠的系统时钟是准确的)。
固定延迟执行适用于那些需要“平稳”运行的重复活动。换句话说,它适用于在短期运行中保持频率准确要比在长期运行中更为重要的活动。这包括大多数动画任务,如以固定时间间隔闪烁的光标。这还包括为响应人类活动所执行的固定活动,如在按住键时自动重复输入字符。
-
- 参数:
-
task
- 所要安排的任务。 -
delay
- 执行任务前的延迟时间,单位是毫秒。 -
period
- 执行各后续任务之间的时间间隔,单位是毫秒。 - 抛出:
-
IllegalArgumentException
- 如果 delay 是负数,或者 delay + System.currentTimeMillis() 是负数。 -
IllegalStateException
- 如果已经安排或取消了任务,已经取消了计时器,或者计时器线程已终止。
schedule
public void schedule(TimerTask task, Date firstTime, long period)
-
安排指定的任务在指定的时间开始进行重复的固定延迟执行。以近似固定的时间间隔(由指定的周期分隔)进行后续执行。
在固定延迟执行中,根据前一次执行的实际执行时间来安排每次执行。如果由于任何原因(如垃圾回收或其他后台活动)而延迟了某次执行,则后续执行也将被延迟。在长期运行中,执行的频率一般要稍慢于指定周期的倒数(假定 Object.wait(long) 所依靠的系统时钟是准确的)。
固定延迟执行适用于那些需要“平稳”运行的重复执行活动。换句话说,它适用于在短期运行中保持频率准确要比在长期运行中更为重要的活动。这包括大多数动画任务,如以固定时间间隔闪烁的光标。这还包括为响应人类活动所执行的固定活动,如在按住键时自动重复输入字符。
-
- 参数:
-
task
- 所要安排的任务。 -
firstTime
- 首次执行任务的时间。 -
period
- 执行各后续任务之间的时间间隔,单位是毫秒。 - 抛出:
-
IllegalArgumentException
- 如果 time.getTime() 是负数。 -
IllegalStateException
- 如果已经安排或取消了任务,已经取消了计时器,或者计时器线程已终止。