高并发
文章平均质量分 79
宫崎骏的杂货铺
摸鱼摸鱼摸鱼
展开
-
两个线程交替输出问题
synchronize实现public class SynchronizedArr { public static void main(String[] args) { char[] chars = {'A', 'B', 'C', 'D', 'E'}; int[] arr = {1, 2, 3, 4, 5}; final Object lock = new Object(); new Thread(() -> {原创 2021-10-05 23:32:03 · 353 阅读 · 0 评论 -
高并发学习笔记4-内存屏障
说明:本博客仅为个人学习笔记,无任何商业用途。1、前言上文我们讲到引入写缓存器和无效化队列的优缺点,本文我们讨论可见性和重排序相关的问题。2、产生背景写缓冲器对于变量的更新操作如果没有写到相应的处理器的高速缓存中,对其他处理器来说仍然不可见的,因为写缓冲器是处理器私有的东西。写缓冲器写入高速缓存的条件是,接收到了其他处理器的Invalidate Acknowledge的消息。若在此期间出现的读操作就会出现可见性问题无效化队列读取数据时候,如果没有将无效化队列中相应的缓存条目置为 I,则可原创 2021-10-05 13:24:35 · 458 阅读 · 0 评论 -
高并发学习笔记3-写缓冲器与无效化队列
说明:本博客仅为个人学习笔记,无任何商业用途。1、前言MESI协议解决了缓存一致性问题,但是其自身也存在一个性能弱点,处理器执行写内存操作时,必须等待其他所有处理器将自身高速缓存中相应的副本数据删除之后所发出的Invalidate Acknowledge/Read Response消息之后才能将数据写入高速缓存。 为了避免和减少这种等待所造成的写操作延迟(latency),硬件设计者引入了写缓存器和无效化队列2、CPU架构图3、写缓冲器 写缓冲器是处理器内部的一个容原创 2021-10-05 12:58:19 · 558 阅读 · 2 评论