并发的必知概念

简介: 并发的必知概念

程序、进程与线程


程序是静态的概念,windows下通常指exe文件。


进程是动态的概念,是程序在运行状态,进程说明程序在内存中的边界。(进程是互不干扰的,比如开启两个记事本,这就是两个进程,这两个记事本的进程并不互相影响,可以分别进行记录)


线程是进程内的一个“基本任务”,每个线程都有自己的功能,是cpu分配和调度的基本单位。

并行 和并发


并行是多个指线程一起执行

并发是指多个线程交替执行


如下图


image.png

并发与并行.png


同步和异步

同步是指当当前任务没有执行完成,不能进行下一个任务

异步是指当前任务尚未完成,但是处于空档期,可以去执行其他任务


image.png

image.png


临界区

临界区用来表示一种公共资源与共享数据,可以被多

个线程使用。


同一时间只能有一个线程访问临界区(阻塞状态),

其他资源必须等待。


死锁、饥饿、活锁

死锁是指多个线程互相在运行过程中相互竞争某正资源,而处于僵持状态。


饥饿是指线程具有优先级的特性,某些线程可能因为优先级问题,而拿不到资源,处于饥饿状态


活锁是指多个线程互相谦让而处于阻塞状态,这就相当于两个在走廊相遇的人:甲向他自己的左边靠想让乙过去,而乙向他的右边靠想让甲过去。可见他们阻塞了对方。甲向他的右边靠,而乙向他的左边靠,他们还是阻塞了对方。


1.png

image.png


线程安全

在拥有共享数据的多条线程并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意外情况。



相关文章
|
8月前
|
算法 安全 编译器
并发的三大特性
并发的三大特性
90 1
并发和并行以及他们的区别
并发:         并发指的是多个任务交替执行的能力,这些任务可能不是同时执行,而是通过快速切换在不同任务之间来实现“同时执行”的效果。在多核处理器上,多个线程可以真正同时执行,而在单核处理器上,线程之间通过时间片轮转实现并发。         所以当谈论并发的时候一定要加个单位时间,也就是说单位时间内并发量是多少?离开了单位时间其实是没有意义的。 并行:         并行指的是多个任务同时执行的能力,每个任务都在独立的CPU上执行。并行通常用于同时处理独立任务,这些任务可以同时执行,而不需要相互等待或协同工作。 两者区别:         关键区别在于并发强调任务在时间上交替执行
143 0
|
6月前
|
机器学习/深度学习 Java 数据挖掘
线程操纵术之更优雅的并行策略问题之并发和并行有区别问题如何解决
线程操纵术之更优雅的并行策略问题之并发和并行有区别问题如何解决
|
7月前
|
分布式计算 并行计算 调度
并行和并发的区别
并行和并发的区别
|
6月前
|
消息中间件 缓存 并行计算
每秒钟承载600万订单级别的无锁并行计算框架 Disruptor学习
每秒钟承载600万订单级别的无锁并行计算框架 Disruptor学习
|
6月前
|
存储 设计模式 监控
Java面试题:如何在不牺牲性能的前提下,实现一个线程安全的单例模式?如何在生产者-消费者模式中平衡生产和消费的速度?Java内存模型规定了变量在内存中的存储和线程间的交互规则
Java面试题:如何在不牺牲性能的前提下,实现一个线程安全的单例模式?如何在生产者-消费者模式中平衡生产和消费的速度?Java内存模型规定了变量在内存中的存储和线程间的交互规则
60 0
|
架构师
架构系列——架构师必备基础:并发、并行与多线程关系
架构系列——架构师必备基础:并发、并行与多线程关系
|
Java
并发三大特性
并发三大特性
44 0
|
Java 调度
多线程基本概念(并发与并行、线程与进程)和入门案例
多线程基本概念(并发与并行、线程与进程)和入门案例
144 1
|
存储 缓存 分布式计算

热门文章

最新文章

相关实验场景

更多