进程:就是一个在内存中独立运行的程序,有自己的地址空间
进程(Process)是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。
主要特征
动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。
并发性:任何进程都可以同其他进程一起并发执行
独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;
异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进
结构特征:进程由程序、数据和进程控制块三部分组成。
多个不同的进程可以包含相同的程序:一个程序在不同的数据集里就构成不同的进程,能得到不同的结果;但是执行过程中,程序不能发生改变。
线程:是进程中某个单一顺序的控制流
线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
适用范围
1.服务器中的文件管理或通信控制
2.前后台处理
3.异步处理
特点
1)轻型实体:线程中的实体基本上不拥有系统资源,只是有一点必不可少的、能保证独立运行的资源。
2)独立调度和分派的基本单位。
3)可并发执行。
4)共享进程资源。
一个JAVA类在运行时至少包含几个线程?
每当使用java命令执行一个类时,实际上都会启动一个jvm,每一个JVM实际上就是在操作系统中启动一个进程,java本身具备了垃圾回收机制,所以每个java运行时至少会启动两个线程,一个main线程,另外一个是垃圾回收机制。
区别
1、进程占用内存空间,进程间相互独立,同一个进程中的不同线程共享进程中的内存、共享资源。某进程内的线程在其它进程不可见。
2、进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信–需要进程同步和互斥手段的辅助,以保证数据的一致性。
3、线程上下文切换比进程上下文切换要快得多。
4、在多线程OS中,线程不是一个可执行的实体。
5、关闭进程,相应的线程会关闭,反之不一定
6、线程又叫轻进程,一个进程中至少包含一个线程