1.什么是CPU多级缓存模型?

小陈:老王,最近学习并发不知如何入手,看的知识很零散;没多久又记不住了,你有啥好建议吗?

老王:来我这,我给你整理一下并发的知识和学习路线,能形成一个比较全面的知识图谱。聊起JAVA并发,还是需要把最基础的概念和知识梳理清楚,然后才能进入后面的深入的学习。

老王:我们先从CPU的多级缓存架构讲起,下面我画个图说一下CPU多级缓存架构:

计算机为什么要设计高速缓存架构?

小陈:CPU和主内存之间为啥要有个高速缓存,CPU直接读写内存不可以吗?

老王:给你分析下原因就知道了:

CPU与主存运行速度的差异

CPU是计算机的大脑,是负责执行指令的;自身的频率和指令执行的速度非常快,一秒执行的指令大概10^9级别的;内存的的速度要比CPU慢上好几个级别,每秒处理的速度大概是10^6的级别的。

CPU长时间空闲

这样就会导致一个问题;如果CPU要频繁的访问主存的话,每次都需要等待很长的时间,执行性能就会低,大部分时间都在等待主存返回数据,没有发挥出CPU的性能

 引入高速缓存,减少CPU等待时间,提升运行效率:

多核CPU的多级缓存架构是怎么样的?

小陈:CPU和主存之间引入高速缓存的目的我知道了,就是为了减少CPU的等待时间,提高执行效率嘛,那多核CPU的多级缓存架构是怎样的?

老王:再给你画一张图,你就知道多核CPU的多级缓存架构是怎样的了:

如上图所示,现代计算机一般都是多核CPU的,其中每个CPU都有自己的高速缓存,其中主内存是共用的。读取数据的时候先从主内存读取到自己的高速缓存中,CPU需要数据时先从自己的高速缓存中查找,找不到再去主内存中拉取,同时刷入自己的高速缓存中。 

多核CPU的多级缓存架构带来的缓存数据一致性问题

小陈:看了多核CPU的多级缓存架构图,这样相当于每个CPU都有自己的缓存吗?这样不会导致各个CPU的缓存之间数据不一致的问题吗?

老王:嘿嘿,看来小陈你挺聪明的,这个问题确实是存在的,下面来给你分析下这个问题产生的原因:

如上图所示:在多线程并发操作的时候,由于CPU多级缓存的存在,有可能你修改了值,但是别的CPU的高速缓存还是旧值,CPU计算的时候使用了旧值计算,导致数据有问题。

关注小陈,公众号上更新更多的java并发文章

小陈:老王,CPU的多级缓存模型我知道咋回事了,后面怎么解决这个问题呢;后面的学习路线是咋样的?

老王:别急,先给你一点点把底层的基础原理讲解了;至于后面的多级缓存数据一致性问题,后面的文章慢慢讲解你就懂了,至于后面的并发的学习,我列了个文章目录,咱们慢慢讲解。

JAVA并发文章目录(公众号)

JAVA并发专题 《筑基篇》

1.什么是CPU多级缓存模型?

2.什么是JAVA内存模型?

3.线程安全之可见性、有序性、原子性是什么?

4.什么是MESI缓存一致性协议?怎么解决并发的可见性问题?

JAVA并发专题《练气篇》

5.volatile怎么保证可见性?

6.什么是内存屏障?具有什么作用?

7.volatile怎么通过内存屏障保证可见性和有序性?

8.volatile为啥不能保证原子性?

9.synchronized是个啥东西?应该怎么使用?

10.synchronized底层之monitor、对象头、Mark Word?

11.synchronized底层是怎么通过monitor进行加锁的?

12.synchronized的锁重入、锁消除、锁升级原理?无锁、偏向锁、轻量级锁、自旋、重量级锁

13.synchronized怎么保证可见性、有序性、原子性?

JAVA并发专题《结丹篇》

14. JDK底层Unsafe类是个啥东西?

15.unsafe类的CAS是怎么保证原子性的?

16.Atomic原子类体系讲解

17.AtomicInteger、AtomicBoolean的底层原理

18.AtomicReference、AtomicStampReference底层原理

19.Atomic中的LongAdder底层原理之分段锁机制

20.Atmoic系列Strimped64分段锁底层实现源码剖析

JAVA并发专题《金丹篇》

21.AQS是个啥?为啥说它是JAVA并发工具基础框架?

22.基于AQS的互斥锁底层源码深度剖析

23.基于AQS的共享锁底层源码深度剖析

24.ReentrantLock是怎么基于AQS实现独占锁的?

25.ReentrantLock的Condition机制底层源码剖析

26.CountDownLatch 门栓底层源码和实现机制深度剖析

27.CyclicBarrier 栅栏底层源码和实现机制深度剖析

28.Semaphore 信号量底层源码和实现机深度剖析

29.ReentrantReadWriteLock 读写锁怎么表示?

30. ReentrantReadWriteLock 读写锁底层源码和机制深度剖析

JAVA并发专题《元神篇》并发数据结构篇

31.CopyOnAarrayList 底层分析,怎么通过写时复制副本,提升并发性能?

32.ConcurrentLinkedQueue 底层分析,CAS 无锁化操作提升并发性能?

33.ConcurrentHashMap详解,底层怎么通过分段锁提升并发性能?

34.LinkedBlockedQueue 阻塞队列怎么通过ReentrantLock和Condition实现?

35.ArrayBlockedQueued 阻塞队列实现思路竟然和LinkedBlockedQueue一样?

36.DelayQueue 底层源码剖析,延时队列怎么实现?

37.SynchronousQueue底层原理解析

JAVA并发专题《飞升篇》线程池底层深度剖析

38. 什么是线程池?看看JDK提供了哪些默认的线程池?底层竟然都是基于ThreadPoolExecutor的?

39.ThreadPoolExecutor 构造函数有哪些参数?这些参数分别表示什么意思?

40.内部有哪些变量,怎么表示线程池状态和线程数,看看道格.李大神是怎么设计的?

41. ThreadPoolExecutor execute执行流程?怎么进行任务提交的?addWorker方法干了啥?什么是workder?

42. ThreadPoolExecutor execute执行流程?何时将任务提交到阻塞队列? 阻塞队列满会发生什么?

43. ThreadPoolExecutor 中的Worker是如何执行提交到线程池的任务的?多余Worker怎么在超出空闲时间后被干掉的?

44. ThreadPoolExecutor shutdown、shutdownNow内部核心流程

45. 再回头看看为啥不推荐Executors提供几种线程池?

46. ThreadPoolExecutor线程池篇总结

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: super()用于调用父类(超类)的一个方法。在子类中,如果有一个同名的方法,可以通过super()调用父类中的方法,从而避免代码冗余。同时,使用super()还可以实现多重继承时对父类方法的有序调用。 ### 回答2: super是一个关键字,用于在子类中调用父类的方法或属性。它的作用主要有以下几个方面: 1. 访问父类的方法:当子类需要重写父类方法时,可以使用super来调用父类的方法。通过使用super关键字,可以在子类中直接调用父类的同名方法,实现对父类方法的扩展或修改。 2. 获得父类的属性:子类可以使用super来访问父类中的属性,这样可以方便地获取父类的属性值,并在子类中进行进一步处理或使用。 3. 子类调用父类构造方法:在子类中使用super可以初始化父类的构造方法,确保父类的初始化工作完成,同时还可以在子类的构造方法中添加自己的初始化逻辑。 4. 多级继承中的用法:当存在多级继承关系时,子类可以使用super来访问其直接父类的方法或属性。这样可以在多个父类之间进行选择性的调用,实现子类对多个父类的功能继承。 总之,super关键字的作用是方便子类对父类的方法和属性进行访问和调用,实现继承、扩展和重写等面向对象的特性和操作。 ### 回答3: super是一个特殊的关键字,在面向对象的编程中用来引用父类的成员(方法和属性)。 super的主要作用是调用父类的方法和属性,可以在子类中调用父类中已经存在的方法或属性。当子类需要重写父类的方法时,可以使用super关键字来引用父类的方法,并在此基础上进行扩展和修改,以实现子类自己的特定功能。 使用super可以保持代码的灵活性和可维护性。当父类的实现发生变化时,子类只需通过使用super关键字来调用修改后的父类方法,而无需修改子类自身的代码。这样可以减少代码冗余,并方便地更新和维护代码。 另外,super也可以用来调用父类的构造方法。在子类的构造方法中,通过super关键字可以调用父类的构造方法,以便初始化父类中的成员变量。这样可以实现子类和父类之间的数据传递和初始化。 总之,super关键字在继承关系中起着非常重要的作用,既可以调用父类的方法和属性,又可以调用父类的构造方法。它使得子类可以继承和复用父类的代码,并在此基础上进行扩展和修改,提高了代码的重用性和灵活性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值