基本概念

简介: 1 同步和异步同步和异步关注的是消息通信机制所谓同步,就是在发出一个调用时,在没有得到结果之前,该调用就不返回。就是由调用者主动等待这个调用的结果。而异步则是相反,调用在发出之后,这个调用就会立即返回,所以没有返回结果。

1 同步和异步

同步和异步关注的是消息通信机制
所谓同步,就是在发出一个调用时,在没有得到结果之前,该调用就不返回。就是由调用者主动等待这个调用的结果。

而异步则是相反,调用在发出之后,这个调用就会立即返回,所以没有返回结果。换句话说,当一个异步过程调用发出后,调用者不会立刻得到结果。而是在调用发出后,被调用者通过状态、通知来通知调用者,或通过回调函数处理这个调用。

举个通俗的例子:
你打电话问书店老板有没有《分布式系统》这本书,如果是同步通信机制,书店老板会说,你稍等,”我查一下",然后开始查啊查,等查好了(可能是5秒,也可能是一天)告诉你结果(返回结果)。
而异步通信机制,书店老板直接告诉你我查一下啊,查好了打电话给你,然后直接挂电话了(不返回结果)。然后查好了,他会主动打电话给你。在这里老板通过“回电”这种方式来回调。

2 阻塞和非阻塞

通常用来形容多线程之间的相互影响.比如一个线程占用了临界区资源,那么其他所有需要这个资源的线程就必须在这个临界区进行等待,导致线程挂起,这就是阻塞.
非阻塞与之相反,强调没有一个线程可以妨碍其他线程执行,所有线程都会尝试不断地前向执行.

3 5.死锁(Deadlock),饥饿(Starvation)和活锁(Livelock)

死锁,饥饿,活锁都属于多线程情况下的线程活跃性问题

死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。
此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。

饥饿指的是某一个或者多个线程无法获得所需要的资源,导致一直无法执行。
可能的情况包括

  • 线程优先级过低,高级的线程不断抢占它需要的资源
  • 某线程长时间占用关键资源不放
    与死锁相比,饥饿是可能在未来一段时间内解决的(比如高级线程完成任务,不再疯狂的执行)

活锁指的是线程都秉承着"谦让"的原则,主动将资源释放给他人使用,导致资源不断在多个线程中跳动,没有一个线程可以同时拿到所有的资源而正常执行.

目录
相关文章
|
9月前
|
数据库
补偿事务基本概念
补偿事务基本概念
99 2
|
存储 Kubernetes API
k8s基本概念-1
k8s基本概念
110 0
|
Kubernetes 调度 Docker
k8s基本概念-2
k8s基本概念
58 0
|
Kubernetes Docker 容器
K8s学习笔记(1)——基本概念和安装
K8s学习笔记(1)——基本概念和安装
168 0
|
存储 Kubernetes 负载均衡
K8S(一)基本概念篇
最近公司要搭建一个微服务项目,之前的docker-compose部署的方式需要替换成K8S了,然后,哈哈,这个机会了又落到我身上了,虽然我并不知道怎么部署,但是我还是挺高兴的,又可以边学习边运用了,真是不赖。接下来不定期更新K8S系列文章,记录我的成长和踩坑记。
138 0
|
安全 编译器 程序员
「1」程序的基本概念
🐰基本数据类型和内存映像 🏡前言 🌸基本数据类型 ✈️void类型 🤔提示 🐰类型转换 🏡前言 🌸隐式转换 ✈️定义 ✈️基本数据类型的兼容关系 🤔提示 🌸强制类型转换 ✈️引入 🤔提示
|
机器学习/深度学习 数据挖掘 开发者
基本概念| 学习笔记
快速学习基本概念。
基本概念| 学习笔记
|
程序员 Linux Go
程序的基本概念|学习笔记
快速学习程序的基本概念
程序的基本概念|学习笔记
|
存储 缓存 关系型数据库
LotusDB 设计与实现—1 基本概念
LotusDB 是一个基于 LSM Tree 进行设计,并结合 B+ 树优势的单机 KV 存储引擎,读写性能稳定、快速。
202 0
LotusDB 设计与实现—1 基本概念
|
监控 测试技术 5G
软件测试理论知识-基本概念
软件测试的被测对象,通俗的讲,就是我们日常见到的各类在电脑、手机、以及一些我们大多数接触的比较少的硬件设备上的相关软件,比如常见的12306购物网站,抖音、淘宝等app。
软件测试理论知识-基本概念

热门文章

最新文章