Module java.management

Class Timer

所有实现的接口:
MBeanRegistration, NotificationBroadcaster, NotificationEmitter, TimerMBean

public class Timer extends NotificationBroadcasterSupport implements TimerMBean, MBeanRegistration
提供定时器MBean的实现。定时器MBean在指定时间发送警报,唤醒所有已注册以接收定时器通知的监听器。

此类管理一组带日期的定时器通知。用户可以添加/删除任意数量的通知。当定时器发出通知并变为过时时,它将自动从定时器通知列表中删除。
可以将额外的定时器通知添加到定期重复的通知中。

注意:

  1. 在发送定时器通知时,定时器会更新通知序列号,无论通知类型如何。
  2. 定时器服务依赖于加载Timer类的主机的系统日期。如果其主机具有不同的系统日期,则监听器可能会收到不及时的通知。为避免此类问题,请同步所有需要定时的主机机器的系统日期。
  3. 周期性通知的默认行为是固定延迟执行,如在Timer中指定的。要使用固定速率执行,请使用重载的addNotification(String, String, Object, Date, long, long, boolean)方法。
  4. 通知监听器可能都在同一线程中执行。因此,它们应该快速执行,以避免阻塞其他监听器或干扰固定延迟执行的规律性。请参阅NotificationBroadcasterSupport
自1.5版本起:
1.5
  • Field Details

    • ONE_SECOND

      public static final long ONE_SECOND
      一秒钟中的毫秒数。对于addNotification方法很有用的常量。
      参见:
    • ONE_MINUTE

      public static final long ONE_MINUTE
      一分钟中的毫秒数。对于addNotification方法很有用的常量。
      参见:
    • ONE_HOUR

      public static final long ONE_HOUR
      一小时中的毫秒数。对于addNotification方法很有用的常量。
      参见:
    • ONE_DAY

      public static final long ONE_DAY
      一天中的毫秒数。对于addNotification方法很有用的常量。
      参见:
    • ONE_WEEK

      public static final long ONE_WEEK
      一周中的毫秒数。对于addNotification方法很有用的常量。
      参见:
  • Constructor Details

    • Timer

      public Timer()
      默认构造函数。
  • Method Details

    • preRegister

      public ObjectName preRegister(MBeanServer server, ObjectName name) throws Exception
      允许定时器MBean在被MBean服务器注册前执行所需的任何操作。

      在此上下文中未使用。

      指定者:
      preRegister 在接口 MBeanRegistration
      参数:
      server - 将定时器MBean注册到的MBean服务器。
      name - 定时器MBean的对象名称。
      返回:
      注册的定时器MBean的名称。
      抛出:
      Exception - 如果出现问题
    • postRegister

      public void postRegister(Boolean registrationDone)
      允许定时器MBean在被MBean服务器注册后或注册失败后执行所需的任何操作。

      在此上下文中未使用。

      指定者:
      postRegister 在接口 MBeanRegistration
      参数:
      registrationDone - 指示MBean是否已成功注册到MBean服务器。值为false表示注册阶段失败。
    • preDeregister

      public void preDeregister() throws Exception
      允许定时器MBean在被MBean服务器注销前执行所需的任何操作。

      停止定时器。

      指定者:
      preDeregister 在接口 MBeanRegistration
      抛出:
      Exception - 如果出现问题
    • postDeregister

      public void postDeregister()
      允许定时器MBean在被MBean服务器注销后执行所需的任何操作。

      在此上下文中未使用。

      指定者:
      postDeregister 在接口 MBeanRegistration
    • start

      public void start()
      启动定时器。

      如果在通知列表中的时间之前存在一个或多个定时器通知,则根据sendPastNotifications标志发送通知,然后根据其周期和剩余发生次数进行更新。如果定时器通知的日期仍早于当前日期,则该通知将从通知列表中删除。

      指定者:
      start 在接口 TimerMBean
    • stop

      public void stop()
      停止定时器。
      指定者:
      stop 在接口 TimerMBean中指定
    • addNotification

      public Integer addNotification(String type, String message, Object userData, Date date, long period, long nbOccurences, boolean fixedRate) throws IllegalArgumentException
      使用指定的typemessageuserData创建一个新的定时器通知,并将其插入到具有给定日期、周期和发生次数的通知列表中。

      如果要插入的定时器通知具有早于当前日期的日期,则该方法的行为就好像指定的日期是当前日期。
      对于一次性通知,通知会立即传递。
      对于周期性通知,第一个通知会立即传递,随后的通知将按照周期参数指定的间隔传递。

      请注意,一旦定时器通知已添加到通知列表中,其关联的日期、周期和发生次数将无法更新。

      对于周期性通知,参数fixedRate的值用于指定执行方案,如在Timer中指定的那样。

      指定者:
      addNotification 在接口 TimerMBean中指定
      参数:
      type - 定时器通知类型。
      message - 定时器通知详细消息。
      userData - 定时器通知用户数据对象。
      date - 通知发生的日期。
      period - 定时器通知的周期(以毫秒为单位)。
      nbOccurences - 定时器通知将被发出的总次数。
      fixedRate - 如果为true且通知是周期性的,则通知将按照固定速率执行方案进行调度。如果为false且通知是周期性的,则通知将按照固定延迟执行方案进行调度。如果通知不是周期性的,则忽略此参数。
      返回:
      新创建的定时器通知的标识符。
      抛出:
      IllegalArgumentException - 日期为null或周期或发生次数为负数。
      参见:
    • addNotification

      public Integer addNotification(String type, String message, Object userData, Date date, long period, long nbOccurences) throws IllegalArgumentException
      使用指定的typemessageuserData创建一个新的定时器通知,并将其插入到具有给定日期、周期和发生次数的通知列表中。

      如果要插入的定时器通知具有早于当前日期的日期,则该方法的行为就好像指定的日期是当前日期。
      对于一次性通知,通知会立即传递。
      对于周期性通知,第一个通知会立即传递,随后的通知将按照周期参数指定的间隔传递。

      请注意,一旦定时器通知已添加到通知列表中,其关联的日期、周期和发生次数将无法更新。

      对于周期性通知,使用固定延迟执行方案,如在Timer中指定的那样。要使用固定速率执行方案,请改用addNotification(String, String, Object, Date, long, long, boolean)

      指定者:
      addNotification 在接口 TimerMBean中指定
      参数:
      type - 定时器通知类型。
      message - 定时器通知详细消息。
      userData - 定时器通知用户数据对象。
      date - 通知发生的日期。
      period - 定时器通知的周期(以毫秒为单位)。
      nbOccurences - 定时器通知将被发出的总次数。
      返回:
      新创建的定时器通知的标识符。
      抛出:
      IllegalArgumentException - 日期为null或周期或发生次数为负数。
      参见:
    • addNotification

      public Integer addNotification(String type, String message, Object userData, Date date, long period) throws IllegalArgumentException
      使用指定的typemessageuserData创建一个新的定时器通知,并将其插入到具有给定日期、周期和发生次数的通知列表中。

      定时器通知将使用定时器周期连续重复使用固定延迟执行方案,如在Timer中指定的那样。要使用固定速率执行方案,请改用addNotification(String, String, Object, Date, long, long, boolean)

      如果要插入的定时器通知具有早于当前日期的日期,则该方法的行为就好像指定的日期是当前日期。第一个通知会立即传递,随后的通知将按照周期参数指定的间隔传递。

      指定者:
      addNotification 在接口 TimerMBean中指定
      参数:
      type - 定时器通知类型。
      message - 定时器通知详细消息。
      userData - 定时器通知用户数据对象。
      date - 通知发生的日期。
      period - 定时器通知的周期(以毫秒为单位)。
      返回:
      新创建的定时器通知的标识符。
      抛出:
      IllegalArgumentException - 日期为null或周期为负数。
    • addNotification

      public Integer addNotification(String type, String message, Object userData, Date date) throws IllegalArgumentException
      从通知列表中删除与指定标识符对应的定时器通知。
      Specified by:
      addNotification in interface TimerMBean
      Parameters:
      type - The timer notification type.
      message - The timer notification detailed message.
      userData - The timer notification user data object.
      date - The date when the notification occurs.
      Returns:
      The identifier of the new created timer notification.
      Throws:
      IllegalArgumentException - The date is null.
    • removeNotification

      public void removeNotification(Integer id) throws InstanceNotFoundException
      Removes the timer notification corresponding to the specified identifier from the list of notifications.
      指定者:
      removeNotification 在接口 TimerMBean中指定
      参数:
      id - 定时器通知标识符。
      抛出:
      InstanceNotFoundException - 指定的标识符不对应于此定时器MBean的通知列表中的任何定时器通知。
    • removeNotifications

      public void removeNotifications(String type) throws InstanceNotFoundException
      从通知列表中删除与指定类型对应的所有定时器通知。
      指定者:
      removeNotifications 在接口 TimerMBean中指定
      参数:
      type - 定时器通知类型。
      抛出:
      InstanceNotFoundException - 指定的类型不对应于此定时器MBean的通知列表中的任何定时器通知。
    • removeAllNotifications

      public void removeAllNotifications()
      从通知列表中删除所有定时器通知,并重置用于更新定时器通知标识符的计数器。
      指定者:
      removeAllNotifications 在接口 TimerMBean中指定
    • getNbNotifications

      public int getNbNotifications()
      获取注册到通知列表中的定时器通知数量。
      指定者:
      getNbNotifications 在接口 TimerMBean
      返回值:
      定时器通知的数量。
    • getAllNotificationIDs

      public Vector<Integer> getAllNotificationIDs()
      获取注册到通知列表中的所有定时器通知标识符。
      指定者:
      getAllNotificationIDs 在接口 TimerMBean
      返回值:
      包含所有定时器通知标识符的Integer对象向量。
      如果没有为此定时器MBean注册定时器通知,则向量为空。
    • getNotificationIDs

      public Vector<Integer> getNotificationIDs(String type)
      获取与指定类型对应的所有定时器通知标识符。
      指定者:
      getNotificationIDs 在接口 TimerMBean
      参数:
      type - 定时器通知类型。
      返回值:
      包含具有指定type的所有定时器通知标识符的Integer对象向量。
      如果没有为此定时器MBean注册具有指定type的定时器通知,则向量为空。
    • getNotificationType

      public String getNotificationType(Integer id)
      获取与指定标识符对应的定时器通知类型。
      指定者:
      getNotificationType 在接口 TimerMBean
      参数:
      id - 定时器通知标识符。
      返回值:
      定时器通知类型,如果标识符未映射到此定时器MBean注册的任何定时器通知,则返回null。
    • getNotificationMessage

      public String getNotificationMessage(Integer id)
      获取与指定标识符对应的定时器通知详细消息。
      指定者:
      getNotificationMessage 在接口 TimerMBean
      参数:
      id - 定时器通知标识符。
      返回值:
      定时器通知详细消息,如果标识符未映射到此定时器MBean注册的任何定时器通知,则返回null。
    • getNotificationUserData

      public Object getNotificationUserData(Integer id)
      获取与指定标识符对应的定时器通知用户数据对象。
      指定者:
      getNotificationUserData 在接口 TimerMBean
      参数:
      id - 定时器通知标识符。
      返回值:
      定时器通知用户数据对象,如果标识符未映射到此定时器MBean注册的任何定时器通知,则返回null。
    • getDate

      public Date getDate(Integer id)
      获取与定时器通知关联的日期的副本。
      指定者:
      getDate 在接口 TimerMBean
      参数:
      id - 定时器通知标识符。
      返回值:
      日期的副本,如果标识符未映射到此定时器MBean注册的任何定时器通知,则返回null。
    • getPeriod

      public Long getPeriod(Integer id)
      获取与定时器通知关联的周期(以毫秒为单位)的副本。
      指定者:
      getPeriod 在接口 TimerMBean
      参数:
      id - 定时器通知标识符。
      返回值:
      周期的副本,如果标识符未映射到此定时器MBean注册的任何定时器通知,则返回null。
    • getNbOccurences

      public Long getNbOccurences(Integer id)
      获取与定时器通知关联的剩余发生次数的副本。
      指定者:
      getNbOccurences 在接口 TimerMBean
      参数:
      id - 定时器通知标识符。
      返回值:
      剩余发生次数的副本,如果标识符未映射到此定时器MBean注册的任何定时器通知,则返回null。
    • getFixedRate

      public Boolean getFixedRate(Integer id)
      获取指示周期性通知是以固定延迟还是以固定速率执行的标志的副本。
      指定者:
      getFixedRate 在接口 TimerMBean
      参数:
      id - 定时器通知标识符。
      返回值:
      获取指示周期性通知是以固定延迟还是以固定速率执行的标志的副本。
    • getSendPastNotifications

      public boolean getSendPastNotifications()
      获取指示定时器是否发送过去通知的标志。
      过去通知发送开/关标志的默认值为false
      指定者:
      getSendPastNotifications 在接口 TimerMBean
      返回值:
      过去通知发送开/关标志的值。
      参见:
    • setSendPastNotifications

      public void setSendPastNotifications(boolean value)
      设置指示定时器是否发送过去通知的标志。
      过去通知发送开/关标志的默认值为false
      指定者:
      setSendPastNotifications 在接口 TimerMBean
      参数:
      value - 过去通知发送开/关标志的值。
      参见:
    • isActive

      public boolean isActive()
      测试定时器MBean是否处于活动状态。当调用start方法时,定时器MBean被标记为活动。当调用stop方法时,它变为非活动状态。
      活动开/关标志的默认值为false
      指定者:
      isActive 在接口 TimerMBean
      返回值:
      如果定时器MBean处于活动状态,则返回true,否则返回false
    • isEmpty

      public boolean isEmpty()
      测试定时器通知列表是否为空。
      指定者:
      isEmpty 在接口 TimerMBean
      返回值:
      如果定时器通知列表为空,则返回true,否则返回false