网站开发专业就业前系军,骏域网络科技有限公司,网站建设实训小组报告,大发 wordpress ifanr文章目录 1.1. 何为进程?1.2. 何为线程? 1.1. 何为进程?
进程是程序的一次执行过程#xff0c;是系统运行程序的基本单位#xff0c;因此进程是动态的。系统运行一个程序即是一个进程从创建#xff0c;运行到消亡的过程。
在 Java 中#xff0c;当我们启动 main 函数时… 文章目录 1.1. 何为进程?1.2. 何为线程? 1.1. 何为进程?
进程是程序的一次执行过程是系统运行程序的基本单位因此进程是动态的。系统运行一个程序即是一个进程从创建运行到消亡的过程。
在 Java 中当我们启动 main 函数时其实就是启动了一个 JVM 的进程而 main 函数所在的线程就是这个进程中的一个线程也称主线程。
如下图所示在 windows 中通过查看任务管理器的方式我们就可以清楚看到 window 当前运行的进程.exe 文件的运行。
1.2. 何为线程?
线程与进程相似但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享进程的堆和方法区资源但每个线程有自己的程序计数器、虚拟机栈和本地方法栈所以系统在产生一个线程或是在各个线程之间作切换工作时负担要比进程小得多也正因为如此线程也被称为轻量级进程。
Java 程序天生就是多线程程序我们可以通过 JMX 来看一下一个普通的 Java 程序有哪些线程代码如下。
public class MultiThread {public static void main(String[] args) {// 获取 Java 线程管理 MXBeanThreadMXBean threadMXBean ManagementFactory.getThreadMXBean();// 不需要获取同步的 monitor 和 synchronizer 信息仅获取线程和线程堆栈信息ThreadInfo[] threadInfos threadMXBean.dumpAllThreads(false, false);// 遍历线程信息仅打印线程 ID 和线程名称信息for (ThreadInfo threadInfo : threadInfos) {System.out.println([ threadInfo.getThreadId() ] threadInfo.getThreadName());}}
}上述程序输出如下输出内容可能不同不用太纠结下面每个线程的作用只用知道 main 线程执行 main 方法即可
[5] Attach Listener //添加事件
[4] Signal Dispatcher // 分发处理给 JVM 信号的线程
[3] Finalizer //调用对象 finalize 方法的线程
[2] Reference Handler //清除 reference 线程
[1] main //main 线程,程序入口从上面的输出内容可以看出一个 Java 程序的运行是 main 线程和多个其他线程同时运行。