首页 > 系统相关 >进程和线程的区别

进程和线程的区别

时间:2022-10-23 21:13:43浏览次数:73  
标签:多线程 区别 线程 进程 main 运行

进程

   是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竞争计算机系统的基本单位。

   是不是觉得根本听不懂?

   其实进程我们每天都遇见过,比如我们每天打开电脑运行的程序,例如xxx.exe就是一个进程。

 

线程

  是进程的一个执行单位,是进程内可调度实体。比进程更小的独立运行的基本单位,同时也被成为轻量级进程。

   与进程不同的是同类的多个线程共享进程的堆和方法区资源,但每个线程有自己的程序计数器、虚拟机栈和本地方法栈,所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此,线程也被称为轻量级进程。

public class MultiThread {
    public static void main(String[] args) {
        // 获取 Java 线程管理 MXBean
        ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean();
        // 不需要获取同步的 monitor 和 synchronizer 信息,仅获取线程和线程堆栈信息
        ThreadInfo[] threadInfos = threadMXBean.dumpAllThreads(false, false);
        // 遍历线程信息,仅打印线程 ID 和线程名称信息
        for (ThreadInfo threadInfo : threadInfos) {
            System.out.println("[" + threadInfo.getThreadId() + "] " + threadInfo.getThreadName());
        }
    }
}

上述程序输出如下(输出内容可能不同,不用太纠结下面每个线程的作用,只用知道 main 线程执行 main 方法即可):

[6] Monitor Ctrl-Break //监听线程转储或“线程堆栈跟踪”的线程
[5] Attach Listener //负责接收到外部的命令,而对该命令进行执行的并且把结果返回给发送者
[4] Signal Dispatcher // 分发处理给 JVM 信号的线程
[3] Finalizer //在垃圾收集前,调用对象 finalize 方法的线程
[2] Reference Handler //用于处理引用对象本身(软引用、弱引用、虚引用)的垃圾回收的线程
[1] main //main 线程,程序入口

从上面的输出内容可以看出:一个 Java 程序的运行是 main 线程和多个其他线程同时运行。

进程与线程的区别

1根本区别:进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位。
2资源分配区别:线程共享本进程的资源如内存、I/O、cpu等,不利于资源的管理和保护,而进程之间的资源是独立的,能很好的进行资源管理和保护。

3地址空间区别:线程共享本进程的地址空间,而进程之间是独立的地址空间。

4)执行过程:多进程要比多线程健壮,一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都死掉,两者均可并发执行。

(5)包含关系:如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的;线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。

 

多进程与多线程的区别

多进程:操作系统中同时运行的多个程序

多线程:在同一个进程中同时运行的多个任务

举个例子,多线程下载软件,可以同时运行多个线程,但是通过程序运行的结果发现,每一次结果都不一致。 因为多线程存在一个特性:随机性。造成的原因:CPU在瞬间不断切换去处理各个线程而导致的,可以理解成多个线程在抢CPU资源。

 

 多线程并不能提高运行速度,但可以提高运行效率,让CPU的使用率更高。但是如果多线程有安全问题或出现频繁的上下文切换时,运算速度可能反而更低。

 

参考:(34条消息) 进程和线程的区别(超详细)_ThinkWon的博客-CSDN博客_进程和线程

 

标签:多线程,区别,线程,进程,main,运行
From: https://www.cnblogs.com/zhangsanlisi411/p/16819523.html

相关文章

  • 进程和线程的区别
    进程一个在内存中运行的应用程序。每个进程都有自己独立的一块内存空间,一个进程可以有多个线程,比如在Windows系统中,一个运行的xx.exe就是一个进程。 进程的本质:PCB(Proce......
  • 10、CPU 如何选择线程
    在Linux内核中,进程和线程都是用 ​​task_struct​​ 结构体表示的,区别在于线程的task_struct结构体里部分资源是共享了进程已创建的资源,比如内存地址空间、代码段、......
  • toString()和valueOf的区别
    说明toString()valueOf()这两个方法几乎出现在js中所有类型对应的内置对象的原型上(null和undefined除外),它们的出现解决了值运算的问题,但也出现了隐式转换这个让人头疼的......
  • 进程与线程的区别
    什么是进程呢?    操作系统为正在运行的程序提供的抽象,就是所谓的进程(process)。一个进程只是一个正在运行的程序。在任何时刻,我们都可以清点它在执行过程中访问或影响......
  • 进程与线程的区别
    进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1--n个线程。(进程是资源分配的最小单位)线程:同一类线程共享代码和数据空间,每个线......
  • 线程和进程的区别
     1.进程和线程的概念 进程计算机的核心是CPU,它承担了所有的计算任务;而操作系统是计算机的管理者,它负责任务的调度、资源的分配和管理,统领整个计算机硬件;应用程序侧是具......
  • 1:进程与线程有什么区别?
    1、线程的基本概念概念:线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,......
  • 进程与线程的区别
     两者定义不一样,进程是执行中的一段程序,而一个进程中执行中的每个任务即为一个线程,一个线程只可以属于一个线程,但一个进程能包含多个线程。并且线程无地址空间,它包括在进......
  • 进程和线程的区别(超详细)
    进程和线程进程一个在内存中运行的应用程序。每个进程都有自己独立的一块内存空间,一个进程可以有多个线程,比如在Windows系统中,一个运行的xx.exe就是一个进程。线程进......
  • 进程和线程的区别
    进程一个在内存中运行的应用程序。每个进程都有自己独立的一块内存空间,一个进程可以有多个线程。线程进程中的一个执行任务(控制单元),负责当前进程中程序的执行。一个进程......