<html>
<head>
<title>javax.management.timer package</title>
<!--
Copyright 1999-2003 Sun Microsystems, Inc.  All Rights Reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.

This code is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License version 2 only, as
published by the Free Software Foundation.  Sun designates this
particular file as subject to the "Classpath" exception as provided
by Sun in the LICENSE file that accompanied this code.

This code is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
version 2 for more details (a copy is included in the LICENSE file that
accompanied this code).

You should have received a copy of the GNU General Public License version
2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.

Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
CA 95054 USA or visit www.sun.com if you need additional information or
have any questions.
-->
</head>
<body bgcolor="white">

      <p>Provides the definition of the Timer MBean.  A Timer MBean
      maintains a list of scheduled notifications and, because it is a
      {@link javax.management.NotificationBroadcaster
      NotificationBroadcaster}, a list of listeners for those
      notifications.  Whenever the time for one of the scheduled
      notifications is reached, each listener receives the
      notification.  Notifications can be repeated at a fixed
      interval, and the number of repetitions can be bounded.</p>

      <p>A listener for a Timer MBean can itself be an MBean, using
      the method {@link
      javax.management.MBeanServer#addNotificationListener(ObjectName,
      ObjectName, NotificationFilter, Object)}.  In this way, a
      management application can create an MBean representing a task,
      then schedule that task using a Timer MBean.</p>

    @since 1.5

</BODY>
</HTML>
