JAVA多线程(1)----简单小白入门篇

1.进程

讲到线程,不得不提进程~
其实,打开windows任务管理器,这些都是进程了
在这里插入图片描述

进程的定义:

进程是程序的一次执行。进程是一个程序及其数据在处理机上顺序执行所发生的活动,进程是具有独立功能的程序在一个数据集合上运行的过程,它是进行资源分配和调度的一个独立单位。

2.线程

提出疑问:
既然系统有进程这么一个概念了,进程已经是可以进行资源分配和调度的了,那为什么还要线程?
为了使得程序能并发执行,系统必须进行以下的一系列有关操作:

  1. 创建进程,系统在创建一个进程时,必须为它分配其所必需的、除处理机以外的所有资源,如内存空间,I/O设备以及建立相应的PCB等等;
  2. 撤销进程,系统在撤销进程时,又必须先对其所占有的资源执行回收操作 ,然后再取消PCB。
  3. 进程切换,对进程进行上下文切换时,需要保留当前进程的CPU环境,设置选中的进程的CPU环境,因而须花费不少的处理时间。

在这里插入图片描述

可以看到进程实现多处理机环境下的进程调度,分派,切换时,都需要花费较⼤的时间和空间开销
引入线程主要是为了提⾼系统的执⾏效率,减少处理机的空转时间和调度切换的时间,以及便于系统管
理。使OS具有更好的并发性
~简单来说:进程实现多处理⾮常耗费CPU的资源,⽽我们引⼊线程是作为调度和分派的基本单位
(取代进程的部分基本功能【调度】)。
那么线程在哪呢??举个例子:
在这里插入图片描述

也就是说:在同一个进程内可以执多个任务,这每个任务我就可以看出是一个线程。
所以说:一个进程会有一个或多个线程的!

3.进程与线程

综上所述

  1. 进程作为资源分配的基本单位
  2. 线程作为资源调度的基本单位,是程序的执行单元,执行路径(单线程一条执行路径,多线程多条执行路径)是程序使用CPU的最基本单位。

线程三种基本状态: 执行、就绪、阻塞

线程五种基本操作:派生、阻塞、激活、调度、结束

在这里插入图片描述
线程的属性:

  1. 轻型实体
  2. 独立调度和分派的基本单位
  3. 可并发执行
  4. 共享进程资源

线程有两个基本类型:

  1. 用户级线程:管理过程全部由用户程序完成,操作系统内核心只对进程进行管理。
  2. 系统级线程(核心级线程):由操作系统内核进行管理。操作系统内核给应用程序提供相应的系统调用和应用程序接口API,使得用户程序可以创建、执行、撤销线程。

在这里插入图片描述

值得注意的是:多线程的存在,不是提升程序的执行速度。其实是为了提高应用程序的使用率,程序的
执行其实都是在抢CPU的资源,CPU的执行权。多个进程是在抢这个资源,而其中的某一个进程如果执
行路径比较多,就会有更高的几率率抢到CPU的执行权。

4.并行与并发

并发:同一时刻内发生两个或者多个事件。是不同实体上的多个事件
并行:同一时间间隔内发生两个或者多个事件。是同一实体上的多个事件

文章大部分内容是个人整理,参考java3y的文章

猜你喜欢

转载自blog.csdn.net/weixin_42553616/article/details/107002654
今日推荐