进程
进程是程序的执行实例,而在进程的执行过程中,它需要操作和管理一系列的数据。这个数据集合通常包括程序的代码、程序计数器、寄存器、堆栈、数据段和其他与程序执行相关的信息。这些数据共同构成了一个进程的上下文(context)。
程序的代码: 进程需要执行的指令集合,通常是可执行文件中的机器码。
程序计数器:用于指示当前正在执行的指令的位置。
寄存器: 进程执行过程中使用的寄存器,用于存储临时数据和中间结果。
堆栈(Stack): 用于存储函数调用和局部变量等临时数据。
数据段(Data Segment): 存储全局变量和静态变量等数据。
其他相关信息: 包括进程的状态、优先级、打开的文件、网络连接等与执行相关的信息。
注意:任意时刻,cpu总是只运行一个进程,其他进程处于非运行状态
线程
线程是处理器可以调度的最小单位
进程与线程:http://t.csdnimg.cn/6kYAu
并发
多条线程在单个CPU上面交替执行
并行
多条线程在多个CPU上面同时执行
Java多线程的实现方式
方式一:继承Thread类并重写run方法,创建子类对象并调用start方法开启线程
方式二:实现Runnable接口并重写run方法,创建实现类对象,再创建Thread对象,将实现类对象作为Thread构造器的实参,最后调用Thread实例的start方法
线程的优先级
计算机中,线程的调度有两种,抢占式调度(线程随机执行)和非抢占式调度(所有线程轮流执行)
java中使用的是抢占式调度。
守护线程
JVM 程序在什么情况下能够正常退出?
The Java Virtual Machine exits when the only threads running are all daemon threads.
上面这句话来自 JDK 官方文档,意思是:
当 JVM 中不存在任何一个正在运行的非守护线程时,则 JVM 进程即会退出。
当其他所有非守护线程结束,那么守护线程也会结束