普通java程序包含的线程

来源:互联网 发布:公文流转登记软件 编辑:程序博客网 时间:2024/06/05 20:10

                                                                                                        一个普通的Java程序运行包含的线程   

一:开门见山--->

         Java语言内置多线程就不在介绍了,一个特别普通的java程序运行时有几个线程也是同时运行的。下面通过一个程序来演示一下main线程运行的同时

    直接上演示程序

   import java.lang.management.ManagementFactory;
  import java.lang.management.ThreadInfo;
  import java.lang.management.ThreadMXBean;
  import java.time.Duration;
  import java.time.Instant;
/**
* Title:TestMultiThread  
* Description:JMX查看一个java程序包含哪些线程 
* @author XXX 
* @date XXXX
 */
public class TestMultiThread {
      public static void main(String[] args) {
//获取运行时间,采用Java8的时间API
      Instant start=Instant.now();
    //获取Java线程管理MXBean。
      ThreadMXBean threadMXBean=ManagementFactory.getThreadMXBean();
    //不需要获取同步的monitor和synchronized的信息,获取线程和堆栈信息
      ThreadInfo[] threadInfos=threadMXBean.dumpAllThreads(false, false);
    //遍历线程的信息,包括ID和线程名称
      for(ThreadInfo threadInfo:threadInfos){
      System.out.println("[线程的ID"+threadInfo.getThreadId()+"]"+"  "+"线程的名称"+threadInfo.getThreadName());
      }
         Instant end=Instant.now();
         System.out.println("运行的时间为:"+Duration.between(start, end).toMillis()+"ms");
}    
}


程序运行结果如下: 

   [线程的ID5]  线程的名称Attach Listener    //附加的线程监听器
   [线程的ID4]  线程的名称Signal Dispatcher   //分发处理发送给JVM信号的线程 
   [线程的ID3]  线程的名称Finalizer        //调用对象的finalize方法的线程
   [线程的ID2]  线程的名称Reference Handler  //清除Reference的线程
   [线程的ID1]  线程的名称main          //mian线程
   运行的时间为:30ms

  简单的说明一下:ThreadMXBean 是Java虚拟机线程系统的管理接口.

  ThreadInfo:返回线程信息.

  这个案例说明:一个Java程序的运行不单单是main()方法在运行的,而是main线程和多个线程的同时运行的.来完成任务的.了解一下这几个线程就可以了. 

    

                    

原创粉丝点击