参考:
下面学习 Java
中进程和线程的概念以及它们之间的关系
主要内容:
- 进程
- 线程
Java
中进程和线程
进程
参考:
进程(process
)是程序的基本执行实体,是进行 资源分配和调度 的 基本单位
进程拥有独立的地址空间,包括文本区域(text region
),数据区域(data region
)和堆栈(stack region
)
线程
参考:线程
线程是进程中的一个实体,是系统 独立调度和分派 的 最小单位,使得同一个进程可以同时并发处理多个任务,线程也被称为轻量级进程(Lightweight Process
)
线程除拥有极少的运行中必不可少的资源(拥有自己的堆栈,程序计数器,局部变量)外,和其它线程共享进程的全部资源(进程代码段,公有数据等)
并发性和并行性
并发性:同一时刻只能有一条指令执行,但多个进程指令被快速轮换执行,使得在宏观上具有多个进程同时执行的效果
并行性:同一时刻,有多条指令在多个处理器上同时执行
Java
中线程和进程
Java
中线程和进程
参考:Java获取当前进程ID以及所有Java进程的进程ID
Java
环境下,启动一个程序,通常对应于启动一个进程,并且至少会启动一个名称为 main
的线程。测试代码如下:
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
/**
* Created by zj on 2017/10/16.
*/
public class MyProcess {
public static void main(String[] args) {
MyProcess process = new MyProcess();
System.out.println("pid: " + process.getProcessID());
System.out.println("thread name: " + Thread.currentThread().getName());
System.out.println("thread id: " + Thread.currentThread().getId());
}
public int getProcessID() {
RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
return Integer.valueOf(runtimeMXBean.getName().split("@")[0]);
}
}