src/java.management/share/classes/javax/management/monitor/Monitor.java

Print this page
rev 14181 : 8147553: Remove sun.misc.ManagedLocalsThread from java.management
Reviewed-by:


  44 import java.util.concurrent.ScheduledFuture;
  45 import java.util.concurrent.ThreadFactory;
  46 import java.util.concurrent.ThreadPoolExecutor;
  47 import java.util.concurrent.TimeUnit;
  48 import java.util.concurrent.atomic.AtomicInteger;
  49 import java.util.concurrent.atomic.AtomicLong;
  50 import java.util.logging.Level;
  51 import javax.management.AttributeNotFoundException;
  52 import javax.management.InstanceNotFoundException;
  53 import javax.management.IntrospectionException;
  54 import javax.management.MBeanAttributeInfo;
  55 import javax.management.MBeanException;
  56 import javax.management.MBeanInfo;
  57 import javax.management.MBeanRegistration;
  58 import javax.management.MBeanServer;
  59 import javax.management.MBeanServerConnection;
  60 import javax.management.NotificationBroadcasterSupport;
  61 import javax.management.ObjectName;
  62 import javax.management.ReflectionException;
  63 import static javax.management.monitor.MonitorNotification.*;
  64 import sun.misc.ManagedLocalsThread;
  65 
  66 /**
  67  * Defines the part common to all monitor MBeans.
  68  * A monitor MBean monitors values of an attribute common to a set of observed
  69  * MBeans. The observed attribute is monitored at intervals specified by the
  70  * granularity period. A gauge value (derived gauge) is derived from the values
  71  * of the observed attribute.
  72  *
  73  *
  74  * @since 1.5
  75  */
  76 public abstract class Monitor
  77     extends NotificationBroadcasterSupport
  78     implements MonitorMBean, MBeanRegistration {
  79 
  80     /*
  81      * ------------------------------------------
  82      *  PACKAGE CLASSES
  83      * ------------------------------------------
  84      */


1620         final String namePrefix;
1621         static final String nameSuffix = "]";
1622 
1623         public DaemonThreadFactory(String poolName) {
1624             SecurityManager s = System.getSecurityManager();
1625             group = (s != null) ? s.getThreadGroup() :
1626                                   Thread.currentThread().getThreadGroup();
1627             namePrefix = "JMX Monitor " + poolName + " Pool [Thread-";
1628         }
1629 
1630         public DaemonThreadFactory(String poolName, ThreadGroup threadGroup) {
1631             group = threadGroup;
1632             namePrefix = "JMX Monitor " + poolName + " Pool [Thread-";
1633         }
1634 
1635         public ThreadGroup getThreadGroup() {
1636             return group;
1637         }
1638 
1639         public Thread newThread(Runnable r) {
1640             Thread t = new ManagedLocalsThread(
1641                 group,
1642                 r,
1643                 namePrefix + threadNumber.getAndIncrement() + nameSuffix


1644             );
1645 
1646             t.setDaemon(true);
1647             if (t.getPriority() != Thread.NORM_PRIORITY)
1648                 t.setPriority(Thread.NORM_PRIORITY);
1649             return t;
1650         }
1651     }
1652 }


  44 import java.util.concurrent.ScheduledFuture;
  45 import java.util.concurrent.ThreadFactory;
  46 import java.util.concurrent.ThreadPoolExecutor;
  47 import java.util.concurrent.TimeUnit;
  48 import java.util.concurrent.atomic.AtomicInteger;
  49 import java.util.concurrent.atomic.AtomicLong;
  50 import java.util.logging.Level;
  51 import javax.management.AttributeNotFoundException;
  52 import javax.management.InstanceNotFoundException;
  53 import javax.management.IntrospectionException;
  54 import javax.management.MBeanAttributeInfo;
  55 import javax.management.MBeanException;
  56 import javax.management.MBeanInfo;
  57 import javax.management.MBeanRegistration;
  58 import javax.management.MBeanServer;
  59 import javax.management.MBeanServerConnection;
  60 import javax.management.NotificationBroadcasterSupport;
  61 import javax.management.ObjectName;
  62 import javax.management.ReflectionException;
  63 import static javax.management.monitor.MonitorNotification.*;

  64 
  65 /**
  66  * Defines the part common to all monitor MBeans.
  67  * A monitor MBean monitors values of an attribute common to a set of observed
  68  * MBeans. The observed attribute is monitored at intervals specified by the
  69  * granularity period. A gauge value (derived gauge) is derived from the values
  70  * of the observed attribute.
  71  *
  72  *
  73  * @since 1.5
  74  */
  75 public abstract class Monitor
  76     extends NotificationBroadcasterSupport
  77     implements MonitorMBean, MBeanRegistration {
  78 
  79     /*
  80      * ------------------------------------------
  81      *  PACKAGE CLASSES
  82      * ------------------------------------------
  83      */


1619         final String namePrefix;
1620         static final String nameSuffix = "]";
1621 
1622         public DaemonThreadFactory(String poolName) {
1623             SecurityManager s = System.getSecurityManager();
1624             group = (s != null) ? s.getThreadGroup() :
1625                                   Thread.currentThread().getThreadGroup();
1626             namePrefix = "JMX Monitor " + poolName + " Pool [Thread-";
1627         }
1628 
1629         public DaemonThreadFactory(String poolName, ThreadGroup threadGroup) {
1630             group = threadGroup;
1631             namePrefix = "JMX Monitor " + poolName + " Pool [Thread-";
1632         }
1633 
1634         public ThreadGroup getThreadGroup() {
1635             return group;
1636         }
1637 
1638         public Thread newThread(Runnable r) {
1639             Thread t = new Thread(
1640                 group,
1641                 r,
1642                 namePrefix + threadNumber.getAndIncrement() + nameSuffix,
1643                 0,
1644                 false
1645             );
1646 
1647             t.setDaemon(true);
1648             if (t.getPriority() != Thread.NORM_PRIORITY)
1649                 t.setPriority(Thread.NORM_PRIORITY);
1650             return t;
1651         }
1652     }
1653 }