- mportjava.lang.management.ManagementFactory;
- importjava.lang.management.ThreadMXBean;
- importjavax.management.MBeanServerConnection;
- importjavax.management.*;
- publicclassJmxRemote{
- publicstaticvoidmain(String[]args){
- try{JMXServiceURLaddress=newJMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:9999/jmxrmi");
- JMXConnectorconnector=JMXConnectorFactory.connect(address);
- MBeanServerConnectionmbs=connector.getMBeanServerConnection();
- ThreadMXBeanthreadBean=ManagementFactory.newPlatformMXBeanProxy(mbs,ManagementFactory.THREAD_MXBEAN_NAME,ThreadMXBean.class);
- //---取得你需要的线程相关讯息参照API其中上图的这些属性和API都可以通过自己写代码操作
- }catch(Exceptione){
- e.printStackTrace();
- }
- }
- }
mport java.lang.management.ManagementFactory;
import java.lang.management.ThreadMXBean;
import javax.management.MBeanServerConnection;
import javax.management.*;
public class JmxRemote {
public static void main(String[] args) {
try {JMXServiceURL address = new JMXServiceURL( "service:jmx:rmi:///jndi/rmi://localhost:9999/jmxrmi");
JMXConnector connector = JMXConnectorFactory.connect(address);
MBeanServerConnection mbs = connector.getMBeanServerConnection();
ThreadMXBean threadBean = ManagementFactory.newPlatformMXBeanProxy(mbs, ManagementFactory.THREAD_MXBEAN_NAME, ThreadMXBean.class);
//---取得你需要的线程相关讯息 参照API 其中上图的这些属性和API都可以通过自己写代码操作
} catch(Exception e){
e.printStackTrace();
}
}
}
常用一些 API 使用说明:
findMonitorDeadlockedThreads 查找死锁线程,返回的死锁线程 list
其中 Jconsole 也提供了该操作
getThreadInfo ( Jconsole ) MBean 支持 getThreadInfo 操作的两种形式,
-
返回指定 id 的不具有堆栈跟踪的线程的线程信息。 getThreadInfo(long id)
-
返回指定 id 的线程的线程信息,并带有指定堆栈追踪元素数的堆栈追踪。 getThereadInfo(long id,int MaxDepth)
实际代码中还提供另外三种取得线程讯息操作
-
返回其 ID 在输入数组 ids 中的每个线程的线程信息,并带有指定堆栈追踪元素数的堆栈追踪。 getThreadInfo (long[]ids, intmaxDepth)
-
返回每个线程的线程信息,线程 ID 位于输入数组 ids 中,带有堆栈跟踪和同步信息。 getThreadInfo (long[]ids, booleanlockedMonitors, booleanlockedSynchronizers)
-
返回其 ID 在输出数组 ids 中的每个线程的线程信息,这些线程不具有堆栈跟踪。 getThreadInfo (long[]ids)