当前位置: 主页 > JAVA语言

java线程与进程的区别-多线程和进程的区别,你了解多少?

发布时间:2023-06-13 10:20   浏览次数:次   作者:佚名

实际上,线程和进程的区别,在学OS时必然是学习过的,所缺的不过是一些总结。

1. 进程

进程(process)是计算机中已运行程序的实体。在面向线程设计的系统中,进程本身不是基本运行单位,而是线程的容器。程序本身只是指令、数据及其组织形式的描述,进程才是程序(那些指令和数据)的真正运行实例。若干进程有可能与同一个程序相关系,且每个进程皆可以同步(循序)或异步(平行)的方式独立运行。现代计算机系统可在同一段时间内以进程的形式将多个程序加载到存储器中,并借由时间共享(或称时分复用),以在一个处理器上表现出同时(平行性)运行的感觉。同样的,使用多线程技术(多线程即每一个线程都代表一个进程内的一个独立执行上下文)的操作系统或计算机架构,同样程序的平行线程,可在多CPU主机或网络上真正同时运行(在不同的CPU上)。

进程和线程的区别_java线程与进程的区别_线程和进程的区别

2. 线程

线程(thread)是程序执行流的最小单元。一个标准的线程由线程IDjava线程与进程的区别,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约java线程与进程的区别,致使线程在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。就绪状态是指线程具备运行的所有条件,逻辑上可以运行,在等待处理机;运行状态是指线程占有处理机正在运行;阻塞状态是指线程在等待一个事件(如某个信号量),逻辑上不可执行。每一个程序都至少有一个线程,若程序只有一个线程,那就是程序本身。

3. 进程与线程

线程和进程的区别_进程和线程的区别_java线程与进程的区别

我们可以总结出以下几条区别:

4. 多进程与多线程对比5. Java多进程与多线程5.1. Java多进程

我们常常去讲多线程开发,但是很少去讲多进程。

进程和线程的区别_线程和进程的区别_java线程与进程的区别

对于Java而言,所有的Java程序都是在JVM中运行,而在JVM内部,程序的运行是通过多线程实现的。每当用户启动一个Java应用程序,就启用了一个Java进程。

Java的多进程通信可以使用管道或者socket。

5.2. Java多线程

进程和线程的区别_java线程与进程的区别_线程和进程的区别

正如在文章JVM里讲过那样,Java的多线程是和操作系统的线程进行映射的。实际上Thread类的大部分api和Java其他api不同,其关键方法是native方法,换言之,Java的多线程的实现有赖于操作系统本身的多线程实现,操作系统的线程模型很大程度的决定了Java虚拟机的映射。

综上,Java本身运行在JVM虚拟机中,而Java的多进程通信又只能依赖于管道和socket,在绝大多情况下,应该考虑的是多线程而非多进程。

6. 参考文章

线程和进程的区别_java线程与进程的区别_进程和线程的区别

进程和线程的区别

JAVA多进程与多线程的概念

多线程还是多进程的选择及区别