概述
十分钟带你了解多线程,阻塞与非阻塞,高并发(纯理念)
1.线程与进程
线程:信息不共享,因为线程需要拥有:
- 线程id
- 寄存器组的值
- 线程的堆栈
- 错误返回码
- 线程的信号屏蔽吗
进程:信息共享,因为进程可由多个线程组成,多个线程可以互相通信
2.线程的隐藏数量,与java的渊源
线程与java是息息相关的,大家都知道线程是可以按照java程序创建出来的,那你是否监测过你创建
的线程数目是否与你创建的一样多呢!
结论是你用java创建线程时去电脑线程监控查看时,电脑监控的线程数目永远要比你创建的线程多!
这是为什么呢?
- jvm自启动会创建一些线程
- debugger观察
- Gc会引发一些线程
3.多线程的作用?多线程的局限与应用场景?
多线程的作用:
- 提高cpu的利用率(单线程永远无法充分利用cpu,那么铁子的钱不就白花了么!)
- 提高用户体验(避免程序卡顿,缩短等待时间,用多个线程去接受http的请求)
- 符合摩尔定律
- 符合阿姆达尔定律(简单来说:就是处理器越多,程序越快,但是有上限,不是局限与你的钱,
是取决于程序中串行部分的比例,并行比例越高越快)
4.多线程的局限性与应用
应用:一般用于任务结构一样,铁子可别 用多线程处理不同的业务,那你报错了我可不管
局限:
性能问题(上下文切换带来消耗)
异构化(说白了就是你想用多线程跑不同的方法,还是乖乖跑一个方法吧,例如:你要把2000条数据
分别取出来取调用某个方法,这个方法是这2000个程序都必走的路,那你直接干多线程就行。案例需要的话@我)
带来线程不安全(可以分段map保存线程安全)
导致线程饥饿(A没走完整个流程,B一直在原点等)
死锁(互相占用资源不肯放手)
5.并行与并发
老铁看见上面的图了么
并发:一个处理器多个线程(某一时间点一致)
并行:多个处理多个线程(物理并行)
6.高并发
含义:很多请求同事向服务器请求
解决方案:多线程
高并发并不一定要多线程处理,redis缓存也可以
衡量高并发数量指标:
QPS每秒查询数
带宽
Pv 一天访问量
Uv 访问数量
7.同步与异步
同步与异步(字段描述用于服务端):
同步:调用者调用服务器的时候,服务器把所有流程走完才返回结果
异步:调用者调用服务器,服务器立马做了响应,然后继续后台走他的业务逻辑
阻塞与非阻塞
阻塞:调用者中途因为某个业务停止,就不在走下一个方法
非阻塞:调用者某个方法执行失败,还要继续走下一个业务
最后
以上就是苹果高跟鞋为你收集整理的十分钟带你了解多线程,阻塞与非阻塞,高并发(纯理念)的全部内容,希望文章能够帮你解决十分钟带你了解多线程,阻塞与非阻塞,高并发(纯理念)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复