普通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线程和多个线程的同时运行的.来完成任务的.了解一下这几个线程就可以了.
- 普通java程序包含的线程
- 可以把普通的Java程序做成真正的exe
- 在android项目中运行普通的java程序出错!
- Daemon线程与普通线程的区别
- java前台线程(普通线程) 和 后台线程
- 包含多个段的程序
- 包含多个段的程序
- 包含多个段的程序
- 包含多个段的程序
- 包含多个段的程序
- 包含多个段的程序
- 包含多个段的程序
- 典型的Java Web程序包含的内容
- 包含第三方JAR包的JAVA程序打包方法
- Linux 编译运行包含包的Java程序
- Java程序包含继承时的子父类执行顺序
- JAVA自带线程池和线程池中包含的workQueue。
- 普通java程序读取资源文件
- Java
- log4j.properties详细配置文档
- javac运行过程
- Android面试题
- 第九章项目二 二叉树遍历的递归算法
- 普通java程序包含的线程
- 求1000以内的完数(一个数恰好等于她的因子之和 eg. 6=1+2+3, 6是完数)
- 异常:java.lang.NoClassDefFoundError: org/quartz/spi/JobFactory
- Java Enumeration 解析
- 求1~10,20~30,35~45的三个和。
- 11.7第五节课
- 选择排序
- 高效的两段式循环缓冲区──BipBuffer
- Hive优化总结