![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发编程
jpcen
这个作者很懒,什么都没留下…
展开
-
缓存一致性协议MESI
缓存一致性协议MESI 由于内存的I\O速度远低于CPU的运算速度,为了解决这个问题充分发挥CPU的运算能力,在CPU内部增加了缓存。CPU缓存可以分为三个级别:L1,L2,L3。级别越小越接近CPU的计算速度,但是容量也越小,价格也越贵。L1缓存一般只有32K,L1缓存一般分为L1d Cache和L1i Cache,L1d是用来存放数据,而L1i则是用来存放指令的;L2缓存更大些,比如256K,速度相对L1慢些;L3缓存是缓存中最大的,量级以M算,同时也是最慢的一级,在同一个CPU插槽中的核共享一个L3缓原创 2020-11-16 21:25:19 · 219 阅读 · 0 评论 -
Java并发机制的底层实现原理学习笔记
Java并发机制的底层 Java代码在编译后会变成字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化为汇编指令在CPU上执行,Java中所使用的的并发机制依赖JVM的实现和CPU的指令。那么Java的并发机制的底层是什么呢?接下来向大家介绍一下? volatile的应用 在多线程编程中,volatile和synchronized都扮演着重要的角色,volatile相对于synchronized是非常轻的,因为它不会引起线程的上下文切换。它保证了共享变量的“可见性”。可见性的意思是当一个程原创 2020-10-18 13:06:36 · 110 阅读 · 0 评论 -
使用生产者消费者模式和阻塞队列进行0到一千万的累加
import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.A原创 2020-10-17 19:57:37 · 85 阅读 · 0 评论 -
Java并发编程的挑战
首先什么是并发编程? 并发编程是指在相同时间间隔内,多个事件按照一定的顺序进行。比如说你在吃饭的整个过程中,吃了米饭、吃了蔬菜、吃了牛肉。吃米饭、吃蔬菜、吃牛肉这三件事其实就是并发执行的。 并发编程的目的是为了程序运行得更快,但是并不是启动更多的线程就能让程序最大限度地并发执行。在并发编程过程中,如果希望程序运行得更快,就会面临着非常多的挑战,比如上下文切换,死锁问题,以及受限于硬件和软件的资源问题,接下来对这几个问题进行详细的介绍。 上下文切换问题 在单核处理器中,CPU给每个线程分配CPU时间片来实现多原创 2020-10-17 14:59:15 · 73 阅读 · 0 评论