【多图】详谈进程与线程

多线程技术概述

进程:

是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间。

拥有独立内存空间的应用程序。

特点:每一个进程的内存空间是独立的,都有自己的堆栈,并且互不共享。

A进程创建一个对象,B进程用不了,除非通过其他手段发过来。

任务管理器页面有应用程序、进程。(如图)

应用程序指的是软件,通常我们认为一个进程就是一个软件,不过现在很多软件都是多进程的。

例如:

音乐播放器

放歌、显示歌词、显示界面

至少三个线程,属于同一款软件音乐播放器,这个进程

线程:

是进程中的一个执行路径,共享一个内存空间,线程之间可以自由切换,并发执行。一个进程最少有一个线程。

线程实际上是在进程基础之上的进一步划分,一个进程启动之后,里面的若干执行路径又可以划分成若干个线程。

线程是进程中的一个个执行路径,多个线程之间共享一块内存空间。

当A线程创建了一个变量以后,BCD或更多线程都可以找到它,只要作用域匹配。

软件中的一条执行路径,给这条执行路径一段代码它就可以去执行。

多个执行路径,同时去执行。

线程之间可以自由切换(让某一个线程休息会儿,另一个线程执行一下),并发执行。一个进程最少有一个线程。如果一个进程里面一个线程都没了,表示要执行的事情一件都没了,这个进程马上也要被关闭掉了。

单线程:

一条一条往下走,顺序执行的流程,只有一条执行路径,只做一件事情。

多线程:

在一个程序的进程中开辟多个执行路径。

提高程序效率。

线程调度:

理解为4核分了8线程/8个脑子。有两种分配方式。

分时调度 – 均分,轮流使用。更合理地交替执行。

所有线程轮流使用CPU的使用权,平均分配每个线程占用CPU的时间。

假设电脑只有一个CPU/脑子,目前在听歌。

播放音乐,其他东西动不了,操作不了电脑。早期系统就是这样,执行病毒就动不了了,没有时间接受你的键盘输入。

后面出了多进程的操作系统,比如Windows,更合理地将一个CPU的时间切成了N份,分给各个软件轮流使用,给人造成一种假象,多个软件好像在走一样,感知不到中间断断续续在切换。

Java使用的调度机制就是抢占式调度。

抢占式调度 – 优先让优先级高的线程使用CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性)。

打开任务管理器,我们可以选中某个进程,右键调整优先级。

通过代码也可以调整某个线程优先级,优先级越高,抢到时间片(CPU分出来的一个个的时间)再去执行。

都有随机概念。

CPU使用抢占式调度模式在多个线程间进行着高速的切换。对于CPU的一个核心而言,某个时刻,只能执行一个线程,而CPU的在多个线程间切换速度相对我们的感觉要快,看上去就是在同一时刻运行。其实,多线程程序并不能提高程序的运行速度(对比排队完成和切换着完成),但能够提高程序运行效率,让CPU的使用率更高。

思考:1000个人访问数据库 排队可能更快,切换次数太多。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值