Java子弹

进程与线程,并发,并行和串行,同步和异步

2021-08-13  本文已影响0人  羋学僧

一、进程, 线程

1、进程

什么是进程?

精简重点

进程是申请一块内存空间,将数据放到内存空间中去, 是申请数据的过程
是最小的资源管理单元

程序与进程的区别

进程之间交互

2、线程

什么是线程

精简重点

是进程的一条流水线, 只用来执行程序,而不涉及到申请资源, 是程序的实际执行者
最小的执行单元

线程之间交互

3、进程与线程的关系

例子:

我们打开一个聊天软件,这就是开启了一个进程
当我们在软件里面打开一些功能,比如空间, 扫一扫, 设置...,这些操作就是线程
所以可以说 "进程" 包含 "线程", "线程" 是 "进程" 的子集

进程是线程的容器

工厂流水线例子:

4、总结

二.并行, 并发, 串行

单核下使用多道技术实现

并行必须有多核才能实现,否则只能实现并发(伪并行)

四、任务运行的三种状态

进程在运行的过程中不断地改变其运行状态
通常一个运行的进程必须具有三种状态:就绪态, 运行态, 阻塞态

1、就绪态 (Ready)

2、运行态 (Running)

3、阻塞态 (Blocked)(sleep)

4、进程三种状态 间的转换

一个进程在运行期间, 会不断地在一种状态切换到另一只种状态
他可以是多次处于就绪态和运行态, 也可以多次处于阻塞态, 下图是三种状态的转换图

处于就绪态的进程, 当进程调度程序为之分配了CPU的时间片后, 该进程就会由就绪态转变成运行态

处于运行态的进程在运行过程中, 因为分配的时间片用完了, 于是失去了CPU的使用权限, 运行态就会重新转为就绪态

正在运行的进程由于遇到I/O操作或被更高优先级的任务抢走CPU使用权限而无法继续执行, 便从运行态转为阻塞态

处于阻塞态的进程, 若其等待的事情已经处理完毕, 于是进程从阻塞态转为就绪态

四、任务提交的两种方式

1、同步

2、异步

3、例子

你叫我去吃饭, 我听到了就立即和你去吃饭, 如果没有听到, 你就不停的叫, 直到我告诉你听到了, 才一起去吃饭

打电话好比同步, 两边是同时进行不能再打给另一个人

你叫我去吃饭, 然后自己去吃饭了, 我得到消息后可能立即走, 也可能过会儿走

发消息好比异步, 和一个人发完消息就可能和另一个人发消息

五、进程池

1、什么是进程池?

2、为什么要有进程池?

忙时会有成千上万的任务需要被执行,闲时可能只有零星任务。

那么在成千上万个任务需要被执行的时候,我们就需要去创建成千上万个进程么?

首先,创建进程需要消耗时间,销毁进程也需要消耗时间。

第二即便开启了成千上万的进程,操作系统也不能让他们同时执行,这样反而会影响程序的效率。

因此我们不能无限制的根据任务去开启或者结束进程。那么我们要怎么做呢?

3、进程池的概念

4、资源进程

5、管理进程

管理进程如何有效的管理资源进程,分配任务给资源进程?

通过IPC,信号,信号量,消息队列,管道等进行交互。

上一篇 下一篇

猜你喜欢

热点阅读