我是靠谱客的博主 苹果高跟鞋,最近开发中收集的这篇文章主要介绍十分钟带你了解多线程,阻塞与非阻塞,高并发(纯理念),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

十分钟带你了解多线程,阻塞与非阻塞,高并发(纯理念)

1.线程与进程
线程:信息不共享,因为线程需要拥有:

  1. 线程id
  2. 寄存器组的值
  3. 线程的堆栈
  4. 错误返回码
  5. 线程的信号屏蔽吗
    进程:信息共享,因为进程可由多个线程组成,多个线程可以互相通信

2.线程的隐藏数量,与java的渊源
线程与java是息息相关的,大家都知道线程是可以按照java程序创建出来的,那你是否监测过你创建
的线程数目是否与你创建的一样多呢!
结论是你用java创建线程时去电脑线程监控查看时,电脑监控的线程数目永远要比你创建的线程多!
这是为什么呢?

  1. jvm自启动会创建一些线程
  2. debugger观察
  3. Gc会引发一些线程

3.多线程的作用?多线程的局限与应用场景?
多线程的作用:

  1. 提高cpu的利用率(单线程永远无法充分利用cpu,那么铁子的钱不就白花了么!)
  2. 提高用户体验(避免程序卡顿,缩短等待时间,用多个线程去接受http的请求)
  3. 符合摩尔定律
  4. 符合阿姆达尔定律(简单来说:就是处理器越多,程序越快,但是有上限,不是局限与你的钱,
    是取决于程序中串行部分的比例,并行比例越高越快)

4.多线程的局限性与应用
应用:一般用于任务结构一样,铁子可别 用多线程处理不同的业务,那你报错了我可不管
局限:
性能问题(上下文切换带来消耗)
异构化(说白了就是你想用多线程跑不同的方法,还是乖乖跑一个方法吧,例如:你要把2000条数据
分别取出来取调用某个方法,这个方法是这2000个程序都必走的路,那你直接干多线程就行。案例需要的话@我)
带来线程不安全(可以分段map保存线程安全)
导致线程饥饿(A没走完整个流程,B一直在原点等)
死锁(互相占用资源不肯放手)

5.并行与并发
在这里插入图片描述
老铁看见上面的图了么
并发:一个处理器多个线程(某一时间点一致)
并行:多个处理多个线程(物理并行)

6.高并发
含义:很多请求同事向服务器请求
解决方案:多线程
高并发并不一定要多线程处理,redis缓存也可以
衡量高并发数量指标:
QPS每秒查询数
带宽
Pv 一天访问量
Uv 访问数量

7.同步与异步
同步与异步(字段描述用于服务端):
同步:调用者调用服务器的时候,服务器把所有流程走完才返回结果
异步:调用者调用服务器,服务器立马做了响应,然后继续后台走他的业务逻辑

阻塞与非阻塞
阻塞:调用者中途因为某个业务停止,就不在走下一个方法
非阻塞:调用者某个方法执行失败,还要继续走下一个业务

最后

以上就是苹果高跟鞋为你收集整理的十分钟带你了解多线程,阻塞与非阻塞,高并发(纯理念)的全部内容,希望文章能够帮你解决十分钟带你了解多线程,阻塞与非阻塞,高并发(纯理念)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部