类 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
  • 字段详细信息

    • 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 方法的有用常量。
      参见:
  • 构造方法详细信息

    • Timer

      public Timer()
      默认构造方法。
  • 方法详情

    • 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 创建新的计时器通知,并将其插入到具有给定日期、周期和发生次数的通知列表中。

      如果要插入的计时器通知的日期早于当前日期,则该方法的行为就像指定日期是当前日期一样。
      对于一次性通知,会立即发送通知。
      对于周期性通知,第一个通知会立即发送,后续通知的间隔时间由 period 参数指定。

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

      在定期通知的情况下,参数的值固定利率用于指定执行方案,如 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 创建新的计时器通知,并将其插入到具有给定日期、周期和发生次数的通知列表中。

      如果要插入的计时器通知的日期早于当前日期,则该方法的行为就像指定日期是当前日期一样。
      对于一次性通知,会立即发送通知。
      对于周期性通知,第一个通知会立即发送,后续通知的间隔时间由 period 参数指定。

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

      在定期通知的情况下,使用固定延迟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)

      如果要插入的计时器通知的日期早于当前日期,则该方法的行为就像指定日期是当前日期一样。第一个通知立即发送,随后的通知间隔由 period 参数指定。

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

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

      定时器通知将在指定日期处理一次。

      如果要插入的计时器通知的日期早于当前日期,则该方法的行为就像指定的日期是当前日期一样,并且会立即发送通知。

      指定者:
      addNotification 在接口 TimerMBean
      参数:
      type - 计时器通知类型。
      message - 计时器通知详细信息。
      userData - 计时器通知用户数据对象。
      date - 通知发生的日期。
      返回:
      新创建的定时器通知的标识符。
      抛出:
      IllegalArgumentException - 日期是 null
    • removeNotification

      public void removeNotification(Integer  id) throws InstanceNotFoundException
      从通知列表中删除与指定标识符对应的计时器通知。
      指定者:
      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 - 计时器通知类型。
      返回:
      Integer 对象的向量,包含具有指定 type 的计时器通知的所有标识符。
      如果没有为具有指定 type 的此计时器 MBean 注册的计时器通知,则向量为空。
    • 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
      返回:
      true 如果计时器 MBean 处于活动状态,false 否则。
    • isEmpty

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