1. ![image.png](https://cdn.nlark.com/yuque/0/2019/png/242830/1567308368156-10d88e9a-24b2-47e7-9ec6-28333fe7bd90.png "image.png")

image.png
image.png
image.pngimage.png
image.png

Java内存规范:规定了一个线程如何和何时可以看到由其他线程修改过后的共享变量值,以及在必须时如何同步地访问共享变量。

堆:运行时数据区,垃圾回收,动态分配内存,生存区也不用预先购入内存区。存取速度略慢
栈:存取速度比堆快,仅次于计算机的寄存器,数据可以共享,存在栈的数据大小与生存区必须是确定的,缺乏灵活性。主要存放一些基本类型的变量
Java内存模型要求对象存在堆中,本地变量和调用栈存放在线程栈上
如果两个线程同时调用了同一个对象的同一个方法,都会访问对象的成员变量,但这两个线程都拥有的是这个成员变量的私有拷贝。

CPU、高速缓存、主存
image.png

所有的线程栈和堆都分布在主内存里面,部分可能会出现在CPU缓存中和CPU内部的寄存器里
image.png


image.png
image.png
image.png
image.png
image.png
image.png

image.png

image.png
image.png
image.png

并发编程与线程安全

PostMan接口模拟测试,并发模拟测试
image.png
image.png
image.png
image.png
image.png

线程安全性

image.png
image.png
image.png

原子性-锁

image.png
image.png

image.png

image.png
image.png
image.png

image.png
image.png
image.png
image.pngimage.png
image.png

发布对象:

image.png
image.png
image.png
image.png

image.png

image.png
image.png

image.png
image.png
image.png
image.png

AbstractQueuedSynchronizer-AQS

image.png
image.pngimage.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png

线程池

image.png

image.png

ThreadPoolExecutor

image.png
先看corePoolSize,再看workQueue,最后看maximumPoolSize
image.png
image.png
image.png
image.png
image.png
image.png

image.png

死锁

image.png
image.png
image.png
image.png
image.png

Spring与线程安全

image.png

image.png
image.png
image.png
image.png

image.png
image.png
image.png

image.png

高并发处理思路与手段

1、扩容

image.png
image.png

image.png
image.png
image.png
image.png
image.png
主要是在客户端实现
image.png
image.png
image.png
1、性能极高
2、支持多种数据类型
3、
4、使用于场景
image.png
image.png
image.png
image.png
image.png

消息队列

image.png
image.png
image.png
image.png
image.png

image.png

image.png
image.png
image.png

image.png
image.png
image.png
image.png
image.png
image.png
image.png

image.png

image.png

image.png
image.png

image.png
image.png
image.png
image.png
image.pngimage.png

image.png
image.png

数据库切库

主库主要负责数据更新和实时数据的查询,从库负责非实时的数据查询
image.png
image.png
image.png
image.png
横向分表:表结构一样,单表容量
纵向分表:根据活跃度分表
image.png

image.png

image.png
image.png