栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

进程、线程、多线程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

进程、线程、多线程

一、概念
  • 进程:进程是程序的一次执行过程,是一个动态概念。进程是操作系统资源分配的基本单位,每一个进程都有一个自己的地址空间。
  • 线程:线程是处理器调度和执行的基本单位,多个线程在同一进程中共享进程所拥有的全部资源。
二、联系

线程是进程的一部分,一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。

三、区别
  • 开销方面:每个进程都有独立的代码和数据空间,进程之间切换的开销大;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器,线程之间切换的开销小。

  • 所处环境:在操作系统中能同时运行多个进程;而在同一个进程中有多个线程同时执行(通过CPU调度,在每个时间片中只有一个线程执行)。

  • 内存分配方面:系统为每个进程分配不同的内存空间;系统不会为线程分配内存,线程所使用的资源来自其所属进程的资源,线程组之间只能共享资源。

四、多线程

多线程:程序中可以同时运行多个不同的线程来执行不同的任务。

  • 优点:
    可以提高CPU的利用率。在多线程程序中,一个线程必须等待的时候,CPU可以运行其它的线程而不是等待,这样就大大提高了程序的效率。
  • 缺点:
    1)线程也是程序,所以线程需要占用内存,线程越多占用内存也越多;
    2)多线程需要协调和管理,所以需要CPU时间跟踪线程;
    3)线程之间对共享资源的访问会相互影响,必须解决竞用共享资源的问题;
    4)线程太多会导致控制太复杂,最终可能造成很多Bug;
  • 多线程与单线程的区别:
    1) 单线程程序:只有一个线程,代码顺序执行,容易出现代码阻塞(页面假死)
    2) 多线程程序:有多个线程,线程间独立运行,能有效地避免代码阻塞,并且提高程序的运行性能
五、多线程的工作原理
  • 对于单处理器系统,操作系统会轮流调度每个线程执行一小段时间,然后切换另一个线程,在切换的时候,保存当前线程使用的寄存器上下文和堆栈,并且在下次调度的时候恢复。这样线程中的程序感觉不到自己被中断过。
  • 对于多处理器系统,操作系统会将不同的线程调度给多个处理器,让它们并行执行。
六、多线程使用场景
  • 一个是并发操作,避免阻塞和更有效利用资源。典型的例子有:在长时间工作的程序中使用工作线程避免界面失去响应。在网络下载程序中,使用多个线程提高对网络的使用效率,更快下载文件。
  • 一个是并行,线程是处理器调度的最小单位。如果你的计算机配置了多个处理器或者内核,那么可以同时利用多个处理器同时计算,加快问题解决的速度。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/458715.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号