进程和线程的区别和联系

简介: 进程和线程的区别和联系

一、什么是进程?


正在运行的程序的实例

       在操作系统没有引入进程的时候,CPU每次只能执行一个程序多个程序只能顺序执行,这样就造成了资源的浪费浪费了大量的时间,为了提高CPU的利用率于是操作系统引入了进程以及中断处理,这样就实现了通一时间内可以运行多个程序提高效率。

资源分配基本单位

二、什么是线程?


进程的实际运行最小单位

       进程虽然实现了并发编程但是平凡创建进程的开销较大,引入的线程是轻量级的进程,可以减少开销提高效率。

调度执行的基本单位


三、进程和线程的联系


相关


  • 一个进程可能有一个线程(单线程),也可能有多个线程(多线程)
  • 一个进程中的线程之间文件描述表、内存指针都是同一份,状态、优先级、上下文、记账信息每个线程独立
  • 一个进程对应一组PCB,每个PCB对应一个线程

区别


  • 进程是资源分配的基本单位,线程是执行调度的最小单位
  • 对进程的调度过程实际上是对线程的调度过程
  • 线程是轻量级的进程,进程包含线程,线程的创建代价比进程小(正式线程存在的意义)
  • 进程之间互通较难需要通过映射,而线程之间资源是互通的

四、线程的状态


新建(NEW):创建出线程但是没有启用。

运行状态(RUNNABLE):调用start方法启用线程,此时线程实在执行状态

无限等待状态(WATING):这种状态下不会被CPU分配执行时间,等到被唤醒。

无Timeout参数的Object.wait()方法

无Timeout参数的Thread.join()方法

LockSupport.park()方法

期限等待(TIME_WAITING):在这种状态下不会被CPU分配执行实现,无需等待被其他线程显式唤醒,在时间结束后即可自动唤醒。

堵塞状态(BLOCKED):线程被堵塞

结束(TERMINATED):线程执行结束

相关文章
|
1天前
|
安全
【进程通信】信号的捕捉原理&&用户态与内核态的区别
【进程通信】信号的捕捉原理&&用户态与内核态的区别
|
6天前
|
Java 测试技术 Python
Python的多线程允许在同一进程中并发执行任务
【5月更文挑战第17天】Python的多线程允许在同一进程中并发执行任务。示例1展示了创建5个线程打印"Hello World",每个线程调用同一函数并使用`join()`等待所有线程完成。示例2使用`ThreadPoolExecutor`下载网页,创建线程池处理多个URL,打印出每个网页的大小。Python多线程还可用于线程间通信和同步,如使用Queue和Lock。
27 1
|
7天前
|
数据处理 Python
Python并发编程:实现高效的多线程与多进程
Python作为一种高级编程语言,提供了强大的并发编程能力,通过多线程和多进程技术,可以实现程序的并发执行,提升系统的性能和响应速度。本文将介绍Python中多线程和多进程的基本概念,以及如何利用它们实现高效的并发编程,解决实际开发中的并发性问题。
|
8天前
|
Unix Linux 调度
linux线程与进程的区别及线程的优势
linux线程与进程的区别及线程的优势
|
8天前
|
Java 调度
【Java多线程】对进程与线程的理解
【Java多线程】对进程与线程的理解
17 1
|
8天前
|
调度
线程和进程的区别?
线程和进程的区别?
|
8天前
|
调度 Python 容器
【python】-详解进程与线程
【python】-详解进程与线程
|
8天前
|
安全 Java
【JAVA】线程的run()和start()有什么区别?
【JAVA】线程的run()和start()有什么区别?
|
8天前
|
运维 监控 Unix
第十五章 Python多进程与多线程
第十五章 Python多进程与多线程
|
8天前
|
存储 Linux Shell
Linux:进程等待 & 进程替换
Linux:进程等待 & 进程替换
32 9