进程和线程的区别
什么是进程
进程的定义:
进程是程序的一次执行,应用程序以进程的形式,运行于操作系统之上,享受操作系统提供的服务。
进程的结构:
一般来说,一个进程一般由程序段、数据段和进程控制块三部分组成。
java程序的进程:
java编写的程序都运行在java虚拟机(JVM)中,每当使用java命令启动一个java程序时,就会启动一个JVM进程。在这个JVM进程内部,所有java程序代码的运行都是以线程来运行的。
什么是线程
线程的定义:
线程是指“进程代码段”的一次顺序执行流程。线程是cpu调度的最小单位。一个进程可以有多个线程,各个线程共享进程的内存空间、系统资源,进程是操作系统资源分配的最小单位。
线程的大致结构:
一个标准的线程主要有以下三部分组成:线程描述信息、程序计数器(PC)和栈内存组成。
java程序的主线程:
JVM找到程序的main()方法,让后运行main()方法,这就产生了一个线程,这个线程称为主线程。当main()方法结束后,主线程运行完成。JVM进程也随机退出。
进程与线程的区别
(1)线程是"进程代码段”的一次的顺序执行流程。一个进程由一个或多个线程组成,一个进程至少有一个线程。
(2)线程是CPU调度的最小单位,进程是操作系统分配资源的最小单位。线程的划分尺度小于进程,使得多线程程序的并发性高。
(3)线程是出于高并发的调度诉求,从进程内部演进而来。线程的出现,既充分发挥CPU的计算性能,弥补进程调度的过于笨重。
(4)进程之间是相互独立的,但进程内部各个线程之间,并不完全独立。各个线程之间共享进程的方法区内存、堆内存、系统资源(文件句柄、系统信号等等)。
(5)切换速度不同:线程上下文切换比进程上下文切换要快得多。所以,有的时候,线程也称之为轻量级进程。