并发专题一
前言
经常在网上看到一些博客,介绍高并发。由于我们在实际开发过程遇到高并发的场景非常少,一直觉得很高大上, 那我们通过CPU,操作系统,和JDK 等方面揭开高并发的””神秘面纱””。
1: 什么时候发生并发
在计算机中,CPU执行程序指令的。那我们看下下面这个图
思考: 当两个程序在不同的CPU种执行的时候,会产生并发行为吗?
答案: 不会产生,因为两个CPU执行的不同程序指令,不存在数据共享,不会产生并发。
如果是下面这张图呢?
当两个CPU 同时执行一段指令的时候,这个时候CPU之间需要进行数据读写,这个时候就会产生并发问题。
Tip 那我们开始思考一个问题,在我们的应用系统中并发会产生在哪些位置?
2: 并发发生的位置
上图全面描述了整个指令会发生并发的地方,并且描述了解决并发的方案。由于CPU 和 其他OS 都已经解决了原子性问题,其实我们只需要关心使用线程过程中并发的问题。
3: 解决并发的方案
3.1 线程级别
Tip : 这里只是简单的描述一下并发的解决方案,后面的文章还会介绍JUC的整体结构以及详细的并发设计,请关注后面的文章
3.2 CPU级别
Tip : 这里只是简单的描述一下CPU级别的并发解决方案 后面会有一篇文章主要介绍CPU级别是怎么解决并发的。