Java程序以JVM进程运行,其内线程共享堆和方法区,独享栈与PC寄存器;JVM采用一对一模型映射OS线程,主线程结束且无非守护线程时进程退出。
Java线程运行在进程内部,一个Java程序启动后就是一个JVM进程,所有线程都属于这个进程,共享进程的内存空间(如堆、方法区),但各自拥有独立的栈和程序计数器。
操作系统以进程为单位分配内存、文件句柄等资源;而CPU真正执行的是线程。JVM本身是一个进程,它内部创建的Thread对象(如new Thread())就是该进程内的轻量级执行单元。
从JDK 1.2起,HotSpot JVM采用“一对一”模型:每个Java Thread对象底层都映射一个OS级别的内核线程(Kernel Thread)。这意味着:
Java程序启动时,JVM自动创建main线程(用户线程),后续创建的线程默认继承其是否为守护线程的属性。关键点:
基本上就这些。理解进程和线程的关系,核心是抓住“共享资源”和“独立调度”这两个关键特征。